proton_api 1.8.0

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 (292) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +246 -0
  4. data/Rakefile +8 -0
  5. data/docs/AccumulationGoalDepositConfig.md +14 -0
  6. data/docs/AnnuitiesApi.md +344 -0
  7. data/docs/AnnuityCalculatorAccumulationHorizonRequest.md +19 -0
  8. data/docs/AnnuityCalculatorAnnuityAmountRequest.md +19 -0
  9. data/docs/AnnuityCalculatorDecumulationHorizonRequest.md +19 -0
  10. data/docs/AnnuityCalculatorDepositAmountRequest.md +19 -0
  11. data/docs/AnnuityCalculatorInitialBalanceRequest.md +19 -0
  12. data/docs/AnnuityDepositSchedule.md +10 -0
  13. data/docs/BacktestRequest.md +17 -0
  14. data/docs/BeneficiaryBequestConfig.md +10 -0
  15. data/docs/BudgetAggregationAccount.md +8 -0
  16. data/docs/BudgetCalculatorRequest.md +16 -0
  17. data/docs/BudgetComponent.md +10 -0
  18. data/docs/BudgetDetails.md +17 -0
  19. data/docs/BusinessFinancialHealthCheckRequest.md +22 -0
  20. data/docs/BusinessFinancialManagementApi.md +288 -0
  21. data/docs/BusinessInvoiceAnalysisRequest.md +20 -0
  22. data/docs/CalculatorDepositSchedule.md +9 -0
  23. data/docs/CalculatorDepositSchedule1.md +10 -0
  24. data/docs/CardLimitCheckRequest.md +9 -0
  25. data/docs/CardTransactionAuthorizationRequest.md +19 -0
  26. data/docs/CardsApi.md +120 -0
  27. data/docs/CashAnalysisRequest.md +17 -0
  28. data/docs/CashFlowAnalysisRequest.md +20 -0
  29. data/docs/ChildrenEducationConfig.md +9 -0
  30. data/docs/CustomerAnalysisRequest.md +17 -0
  31. data/docs/DecumulationGoalDepositConfig.md +14 -0
  32. data/docs/DimensionalRiskScoreRequest.md +16 -0
  33. data/docs/DiversificationScoreRequest.md +19 -0
  34. data/docs/EducationCalculatorAnnualCostRequest.md +18 -0
  35. data/docs/EducationCalculatorDepositAmountRequest.md +19 -0
  36. data/docs/EducationCalculatorPercentCoveredRequest.md +18 -0
  37. data/docs/EducationConfig.md +10 -0
  38. data/docs/EmergencyFundCalculatorRequest.md +24 -0
  39. data/docs/EventStudyRequest.md +18 -0
  40. data/docs/FeeAnalysisRequest.md +13 -0
  41. data/docs/FinancialHealthApi.md +232 -0
  42. data/docs/FinancialHealthCheckRequest.md +17 -0
  43. data/docs/FinancialPictureRequest.md +16 -0
  44. data/docs/FinancialPlanningApi.md +680 -0
  45. data/docs/FinancialStatementAnalysisRequest.md +22 -0
  46. data/docs/GoalAccumulationAllocationRequest.md +33 -0
  47. data/docs/GoalAccumulationRecommendationRequest.md +28 -0
  48. data/docs/GoalAccumulationStatusRequest.md +28 -0
  49. data/docs/GoalConfig.md +9 -0
  50. data/docs/GoalDecumulationAllocationRequest.md +34 -0
  51. data/docs/GoalDecumulationRecommendationRequest.md +29 -0
  52. data/docs/GoalDecumulationStatusRequest.md +29 -0
  53. data/docs/GoalWithdrawalConfig.md +14 -0
  54. data/docs/GoalsApi.md +344 -0
  55. data/docs/GuaranteedRateBenefit.md +11 -0
  56. data/docs/IncomeConfig.md +10 -0
  57. data/docs/LifeInsuranceApi.md +64 -0
  58. data/docs/LifeInsuranceNeedsCalculatorRequest.md +22 -0
  59. data/docs/MonteCarloRequest.md +29 -0
  60. data/docs/MortgageCalculatorDownPaymentRequest.md +11 -0
  61. data/docs/MortgageCalculatorHomePriceRequest.md +11 -0
  62. data/docs/MortgageCalculatorPeriodicPaymentRequest.md +11 -0
  63. data/docs/MvoRequest.md +18 -0
  64. data/docs/OptConfig.md +14 -0
  65. data/docs/OptConfig1.md +12 -0
  66. data/docs/Periods.md +9 -0
  67. data/docs/PersonalFinancialManagementApi.md +288 -0
  68. data/docs/PortfolioConstructionApi.md +64 -0
  69. data/docs/PortfolioManagementApi.md +64 -0
  70. data/docs/PortfolioOptimizationScoreRequest.md +21 -0
  71. data/docs/PortfolioWhatIfRequest.md +21 -0
  72. data/docs/PurchaseCalculatorAmountRequest.md +16 -0
  73. data/docs/PurchaseCalculatorDepositAmountRequest.md +17 -0
  74. data/docs/PurchaseCalculatorHorizonRequest.md +15 -0
  75. data/docs/RatioTargets.md +13 -0
  76. data/docs/RatioTargets1.md +13 -0
  77. data/docs/RebalancingSignalRequest.md +13 -0
  78. data/docs/RecommendationConfig.md +15 -0
  79. data/docs/RecommendationConfig1.md +14 -0
  80. data/docs/RecurringTransactionAnalysisRequest.md +19 -0
  81. data/docs/RetirementCalculatorDepositAmountRequest.md +20 -0
  82. data/docs/RetirementCalculatorExpensesRequest.md +19 -0
  83. data/docs/RetirementCalculatorPercentCoveredRequest.md +19 -0
  84. data/docs/RiskAllocationRequest.md +14 -0
  85. data/docs/RiskScoreRequest.md +13 -0
  86. data/docs/RiskScoringApi.md +176 -0
  87. data/docs/SavingsCalculatorRequest.md +17 -0
  88. data/docs/SavingsDepositSchedule.md +11 -0
  89. data/docs/ScenarioAnalysisRequest.md +22 -0
  90. data/docs/SensitivityAnalysisRequest.md +22 -0
  91. data/docs/SensitivityFactor.md +11 -0
  92. data/docs/Settings.md +13 -0
  93. data/docs/SimulationsApi.md +400 -0
  94. data/docs/VariableAnnuityRequest.md +34 -0
  95. data/docs/WConfig.md +12 -0
  96. data/docs/WConfig1.md +12 -0
  97. data/git_push.sh +55 -0
  98. data/lib/proton_api.rb +132 -0
  99. data/lib/proton_api/api/annuities_api.rb +347 -0
  100. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  101. data/lib/proton_api/api/cards_api.rb +131 -0
  102. data/lib/proton_api/api/financial_health_api.rb +239 -0
  103. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  104. data/lib/proton_api/api/goals_api.rb +347 -0
  105. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  106. data/lib/proton_api/api/personal_financial_management_api.rb +293 -0
  107. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  108. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  109. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  110. data/lib/proton_api/api/simulations_api.rb +401 -0
  111. data/lib/proton_api/api_client.rb +391 -0
  112. data/lib/proton_api/api_error.rb +38 -0
  113. data/lib/proton_api/auth_configuration.rb +177 -0
  114. data/lib/proton_api/configuration.rb +209 -0
  115. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  116. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +462 -0
  117. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +464 -0
  118. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +462 -0
  119. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +471 -0
  120. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +471 -0
  121. data/lib/proton_api/models/annuity_deposit_schedule.rb +257 -0
  122. data/lib/proton_api/models/backtest_request.rb +298 -0
  123. data/lib/proton_api/models/beneficiary_bequest_config.rb +260 -0
  124. data/lib/proton_api/models/budget_aggregation_account.rb +189 -0
  125. data/lib/proton_api/models/budget_calculator_request.rb +315 -0
  126. data/lib/proton_api/models/budget_component.rb +231 -0
  127. data/lib/proton_api/models/budget_details.rb +340 -0
  128. data/lib/proton_api/models/business_financial_health_check_request.rb +478 -0
  129. data/lib/proton_api/models/business_invoice_analysis_request.rb +355 -0
  130. data/lib/proton_api/models/calculator_deposit_schedule.rb +231 -0
  131. data/lib/proton_api/models/calculator_deposit_schedule1.rb +257 -0
  132. data/lib/proton_api/models/card_limit_check_request.rb +203 -0
  133. data/lib/proton_api/models/card_transaction_authorization_request.rb +359 -0
  134. data/lib/proton_api/models/cash_analysis_request.rb +321 -0
  135. data/lib/proton_api/models/cash_flow_analysis_request.rb +338 -0
  136. data/lib/proton_api/models/children_education_config.rb +224 -0
  137. data/lib/proton_api/models/customer_analysis_request.rb +286 -0
  138. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +338 -0
  139. data/lib/proton_api/models/dimensional_risk_score_request.rb +285 -0
  140. data/lib/proton_api/models/diversification_score_request.rb +327 -0
  141. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +453 -0
  142. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +486 -0
  143. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +451 -0
  144. data/lib/proton_api/models/education_config.rb +274 -0
  145. data/lib/proton_api/models/emergency_fund_calculator_request.rb +564 -0
  146. data/lib/proton_api/models/event_study_request.rb +320 -0
  147. data/lib/proton_api/models/fee_analysis_request.rb +231 -0
  148. data/lib/proton_api/models/financial_health_check_request.rb +387 -0
  149. data/lib/proton_api/models/financial_picture_request.rb +269 -0
  150. data/lib/proton_api/models/financial_statement_analysis_request.rb +455 -0
  151. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +732 -0
  152. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +625 -0
  153. data/lib/proton_api/models/goal_accumulation_status_request.rb +625 -0
  154. data/lib/proton_api/models/goal_config.rb +225 -0
  155. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +767 -0
  156. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +660 -0
  157. data/lib/proton_api/models/goal_decumulation_status_request.rb +660 -0
  158. data/lib/proton_api/models/goal_withdrawal_config.rb +338 -0
  159. data/lib/proton_api/models/guaranteed_rate_benefit.rb +275 -0
  160. data/lib/proton_api/models/income_config.rb +269 -0
  161. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +518 -0
  162. data/lib/proton_api/models/monte_carlo_request.rb +507 -0
  163. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +302 -0
  164. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +302 -0
  165. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +302 -0
  166. data/lib/proton_api/models/mvo_request.rb +369 -0
  167. data/lib/proton_api/models/opt_config.rb +303 -0
  168. data/lib/proton_api/models/opt_config1.rb +263 -0
  169. data/lib/proton_api/models/periods.rb +223 -0
  170. data/lib/proton_api/models/portfolio_optimization_score_request.rb +359 -0
  171. data/lib/proton_api/models/portfolio_what_if_request.rb +354 -0
  172. data/lib/proton_api/models/purchase_calculator_amount_request.rb +404 -0
  173. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +437 -0
  174. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +359 -0
  175. data/lib/proton_api/models/ratio_targets.rb +331 -0
  176. data/lib/proton_api/models/ratio_targets1.rb +331 -0
  177. data/lib/proton_api/models/rebalancing_signal_request.rb +241 -0
  178. data/lib/proton_api/models/recommendation_config.rb +360 -0
  179. data/lib/proton_api/models/recommendation_config1.rb +349 -0
  180. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +370 -0
  181. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +512 -0
  182. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +479 -0
  183. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +477 -0
  184. data/lib/proton_api/models/risk_allocation_request.rb +319 -0
  185. data/lib/proton_api/models/risk_score_request.rb +242 -0
  186. data/lib/proton_api/models/savings_calculator_request.rb +398 -0
  187. data/lib/proton_api/models/savings_deposit_schedule.rb +279 -0
  188. data/lib/proton_api/models/scenario_analysis_request.rb +404 -0
  189. data/lib/proton_api/models/sensitivity_analysis_request.rb +402 -0
  190. data/lib/proton_api/models/sensitivity_factor.rb +281 -0
  191. data/lib/proton_api/models/settings.rb +290 -0
  192. data/lib/proton_api/models/variable_annuity_request.rb +703 -0
  193. data/lib/proton_api/models/w_config.rb +385 -0
  194. data/lib/proton_api/models/w_config1.rb +350 -0
  195. data/lib/proton_api/version.rb +15 -0
  196. data/proton_api.gemspec +46 -0
  197. data/spec/api/annuities_api_spec.rb +107 -0
  198. data/spec/api/business_financial_management_api_spec.rb +95 -0
  199. data/spec/api/cards_api_spec.rb +59 -0
  200. data/spec/api/financial_health_api_spec.rb +83 -0
  201. data/spec/api/financial_planning_api_spec.rb +179 -0
  202. data/spec/api/goals_api_spec.rb +107 -0
  203. data/spec/api/life_insurance_api_spec.rb +47 -0
  204. data/spec/api/personal_financial_management_api_spec.rb +95 -0
  205. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  206. data/spec/api/portfolio_management_api_spec.rb +47 -0
  207. data/spec/api/risk_scoring_api_spec.rb +71 -0
  208. data/spec/api/simulations_api_spec.rb +119 -0
  209. data/spec/api_client_spec.rb +243 -0
  210. data/spec/configuration_spec.rb +42 -0
  211. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  212. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  213. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  214. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  215. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  216. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  217. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  218. data/spec/models/backtest_request_spec.rb +95 -0
  219. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  220. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  221. data/spec/models/budget_calculator_request_spec.rb +93 -0
  222. data/spec/models/budget_component_spec.rb +53 -0
  223. data/spec/models/budget_details_spec.rb +99 -0
  224. data/spec/models/business_financial_health_check_request_spec.rb +137 -0
  225. data/spec/models/business_invoice_analysis_request_spec.rb +117 -0
  226. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  227. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  228. data/spec/models/card_limit_check_request_spec.rb +47 -0
  229. data/spec/models/card_transaction_authorization_request_spec.rb +115 -0
  230. data/spec/models/cash_analysis_request_spec.rb +103 -0
  231. data/spec/models/cash_flow_analysis_request_spec.rb +117 -0
  232. data/spec/models/children_education_config_spec.rb +47 -0
  233. data/spec/models/customer_analysis_request_spec.rb +95 -0
  234. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  235. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  236. data/spec/models/diversification_score_request_spec.rb +111 -0
  237. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  238. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  239. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  240. data/spec/models/education_config_spec.rb +53 -0
  241. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  242. data/spec/models/event_study_request_spec.rb +109 -0
  243. data/spec/models/fee_analysis_request_spec.rb +71 -0
  244. data/spec/models/financial_health_check_request_spec.rb +95 -0
  245. data/spec/models/financial_picture_request_spec.rb +89 -0
  246. data/spec/models/financial_statement_analysis_request_spec.rb +149 -0
  247. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  248. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  249. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  250. data/spec/models/goal_config_spec.rb +47 -0
  251. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  252. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  253. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  254. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  255. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  256. data/spec/models/income_config_spec.rb +53 -0
  257. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  258. data/spec/models/monte_carlo_request_spec.rb +179 -0
  259. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  260. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  261. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  262. data/spec/models/mvo_request_spec.rb +113 -0
  263. data/spec/models/opt_config1_spec.rb +69 -0
  264. data/spec/models/opt_config_spec.rb +81 -0
  265. data/spec/models/periods_spec.rb +47 -0
  266. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  267. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  268. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  269. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  270. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  271. data/spec/models/ratio_targets1_spec.rb +71 -0
  272. data/spec/models/ratio_targets_spec.rb +71 -0
  273. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  274. data/spec/models/recommendation_config1_spec.rb +77 -0
  275. data/spec/models/recommendation_config_spec.rb +83 -0
  276. data/spec/models/recurring_transaction_analysis_request_spec.rb +111 -0
  277. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  278. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  279. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  280. data/spec/models/risk_allocation_request_spec.rb +85 -0
  281. data/spec/models/risk_score_request_spec.rb +71 -0
  282. data/spec/models/savings_calculator_request_spec.rb +99 -0
  283. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  284. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  285. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  286. data/spec/models/sensitivity_factor_spec.rb +59 -0
  287. data/spec/models/settings_spec.rb +79 -0
  288. data/spec/models/variable_annuity_request_spec.rb +209 -0
  289. data/spec/models/w_config1_spec.rb +65 -0
  290. data/spec/models/w_config_spec.rb +65 -0
  291. data/spec/spec_helper.rb +111 -0
  292. metadata +628 -0
@@ -0,0 +1,225 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.8.0
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.17
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class GoalConfig
17
+ attr_accessor :goal_inflation
18
+
19
+ attr_accessor :goal_amount
20
+
21
+ # Attribute mapping from ruby-style variable name to JSON key.
22
+ def self.attribute_map
23
+ {
24
+ :'goal_inflation' => :'goal_inflation',
25
+ :'goal_amount' => :'goal_amount'
26
+ }
27
+ end
28
+
29
+ # Attribute type mapping.
30
+ def self.swagger_types
31
+ {
32
+ :'goal_inflation' => :'Float',
33
+ :'goal_amount' => :'Float'
34
+ }
35
+ end
36
+
37
+ # Initializes the object
38
+ # @param [Hash] attributes Model attributes in the form of hash
39
+ def initialize(attributes = {})
40
+ return unless attributes.is_a?(Hash)
41
+
42
+ # convert string to symbol for hash key
43
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
44
+
45
+ if attributes.has_key?(:'goal_inflation')
46
+ self.goal_inflation = attributes[:'goal_inflation']
47
+ else
48
+ self.goal_inflation = 0.0
49
+ end
50
+
51
+ if attributes.has_key?(:'goal_amount')
52
+ self.goal_amount = attributes[:'goal_amount']
53
+ end
54
+ end
55
+
56
+ # Show invalid properties with the reasons. Usually used together with valid?
57
+ # @return Array for valid properties with the reasons
58
+ def list_invalid_properties
59
+ invalid_properties = Array.new
60
+ if !@goal_inflation.nil? && @goal_inflation < -1
61
+ invalid_properties.push('invalid value for "goal_inflation", must be greater than or equal to -1.')
62
+ end
63
+
64
+ if !@goal_amount.nil? && @goal_amount < 0
65
+ invalid_properties.push('invalid value for "goal_amount", must be greater than or equal to 0.')
66
+ end
67
+
68
+ invalid_properties
69
+ end
70
+
71
+ # Check to see if the all the properties in the model are valid
72
+ # @return true if the model is valid
73
+ def valid?
74
+ return false if !@goal_inflation.nil? && @goal_inflation < -1
75
+ return false if !@goal_amount.nil? && @goal_amount < 0
76
+ true
77
+ end
78
+
79
+ # Custom attribute writer method with validation
80
+ # @param [Object] goal_inflation Value to be assigned
81
+ def goal_inflation=(goal_inflation)
82
+ if !goal_inflation.nil? && goal_inflation < -1
83
+ fail ArgumentError, 'invalid value for "goal_inflation", must be greater than or equal to -1.'
84
+ end
85
+
86
+ @goal_inflation = goal_inflation
87
+ end
88
+
89
+ # Custom attribute writer method with validation
90
+ # @param [Object] goal_amount Value to be assigned
91
+ def goal_amount=(goal_amount)
92
+ if !goal_amount.nil? && goal_amount < 0
93
+ fail ArgumentError, 'invalid value for "goal_amount", must be greater than or equal to 0.'
94
+ end
95
+
96
+ @goal_amount = goal_amount
97
+ end
98
+
99
+ # Checks equality by comparing each attribute.
100
+ # @param [Object] Object to be compared
101
+ def ==(o)
102
+ return true if self.equal?(o)
103
+ self.class == o.class &&
104
+ goal_inflation == o.goal_inflation &&
105
+ goal_amount == o.goal_amount
106
+ end
107
+
108
+ # @see the `==` method
109
+ # @param [Object] Object to be compared
110
+ def eql?(o)
111
+ self == o
112
+ end
113
+
114
+ # Calculates hash code according to all attributes.
115
+ # @return [Fixnum] Hash code
116
+ def hash
117
+ [goal_inflation, goal_amount].hash
118
+ end
119
+
120
+ # Builds the object from hash
121
+ # @param [Hash] attributes Model attributes in the form of hash
122
+ # @return [Object] Returns the model itself
123
+ def build_from_hash(attributes)
124
+ return nil unless attributes.is_a?(Hash)
125
+ self.class.swagger_types.each_pair do |key, type|
126
+ if type =~ /\AArray<(.*)>/i
127
+ # check to ensure the input is an array given that the attribute
128
+ # is documented as an array but the input is not
129
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
130
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
131
+ end
132
+ elsif !attributes[self.class.attribute_map[key]].nil?
133
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
134
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
135
+ end
136
+
137
+ self
138
+ end
139
+
140
+ # Deserializes the data based on type
141
+ # @param string type Data type
142
+ # @param string value Value to be deserialized
143
+ # @return [Object] Deserialized data
144
+ def _deserialize(type, value)
145
+ case type.to_sym
146
+ when :DateTime
147
+ DateTime.parse(value)
148
+ when :Date
149
+ Date.parse(value)
150
+ when :String
151
+ value.to_s
152
+ when :Integer
153
+ value.to_i
154
+ when :Float
155
+ value.to_f
156
+ when :BOOLEAN
157
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
158
+ true
159
+ else
160
+ false
161
+ end
162
+ when :Object
163
+ # generic object (usually a Hash), return directly
164
+ value
165
+ when /\AArray<(?<inner_type>.+)>\z/
166
+ inner_type = Regexp.last_match[:inner_type]
167
+ value.map { |v| _deserialize(inner_type, v) }
168
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
169
+ k_type = Regexp.last_match[:k_type]
170
+ v_type = Regexp.last_match[:v_type]
171
+ {}.tap do |hash|
172
+ value.each do |k, v|
173
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
174
+ end
175
+ end
176
+ else # model
177
+ temp_model = ProtonApi.const_get(type).new
178
+ temp_model.build_from_hash(value)
179
+ end
180
+ end
181
+
182
+ # Returns the string representation of the object
183
+ # @return [String] String presentation of the object
184
+ def to_s
185
+ to_hash.to_s
186
+ end
187
+
188
+ # to_body is an alias to to_hash (backward compatibility)
189
+ # @return [Hash] Returns the object in the form of hash
190
+ def to_body
191
+ to_hash
192
+ end
193
+
194
+ # Returns the object in the form of hash
195
+ # @return [Hash] Returns the object in the form of hash
196
+ def to_hash
197
+ hash = {}
198
+ self.class.attribute_map.each_pair do |attr, param|
199
+ value = self.send(attr)
200
+ next if value.nil?
201
+ hash[param] = _to_hash(value)
202
+ end
203
+ hash
204
+ end
205
+
206
+ # Outputs non-array value in the form of hash
207
+ # For object, use to_hash. Otherwise, just return the value
208
+ # @param [Object] value Any valid value
209
+ # @return [Hash] Returns the value in the form of hash
210
+ def _to_hash(value)
211
+ if value.is_a?(Array)
212
+ value.compact.map { |v| _to_hash(v) }
213
+ elsif value.is_a?(Hash)
214
+ {}.tap do |hash|
215
+ value.each { |k, v| hash[k] = _to_hash(v) }
216
+ end
217
+ elsif value.respond_to? :to_hash
218
+ value.to_hash
219
+ else
220
+ value
221
+ end
222
+ end
223
+
224
+ end
225
+ end
@@ -0,0 +1,767 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.8.0
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.17
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class GoalDecumulationAllocationRequest
17
+ attr_accessor :thresh_type
18
+
19
+ attr_accessor :goal_id
20
+
21
+ attr_accessor :client_id
22
+
23
+ attr_accessor :conf_tgt
24
+
25
+ attr_accessor :risk_score
26
+
27
+ attr_accessor :remove_outliers
28
+
29
+ attr_accessor :allocation_priority
30
+
31
+ attr_accessor :a_horizon
32
+
33
+ attr_accessor :withdrawal_config
34
+
35
+ attr_accessor :market_data_source
36
+
37
+ attr_accessor :compounding_rate
38
+
39
+ attr_accessor :adjust_for_compounding
40
+
41
+ attr_accessor :opt_config
42
+
43
+ attr_accessor :deposit_config
44
+
45
+ attr_accessor :use_proxy_data
46
+
47
+ attr_accessor :thresh
48
+
49
+ attr_accessor :horizon_frequency
50
+
51
+ attr_accessor :recommendation_config
52
+
53
+ attr_accessor :create_log
54
+
55
+ attr_accessor :withdrawal_tax
56
+
57
+ attr_accessor :trading_days_per_year
58
+
59
+ attr_accessor :allocations
60
+
61
+ attr_accessor :n
62
+
63
+ attr_accessor :d_horizon
64
+
65
+ attr_accessor :curr_inv
66
+
67
+ attr_accessor :recommend_type
68
+
69
+ attr_accessor :allocation_method
70
+
71
+ class EnumAttributeValidator
72
+ attr_reader :datatype
73
+ attr_reader :allowable_values
74
+
75
+ def initialize(datatype, allowable_values)
76
+ @allowable_values = allowable_values.map do |value|
77
+ case datatype.to_s
78
+ when /Integer/i
79
+ value.to_i
80
+ when /Float/i
81
+ value.to_f
82
+ else
83
+ value
84
+ end
85
+ end
86
+ end
87
+
88
+ def valid?(value)
89
+ !value || allowable_values.include?(value)
90
+ end
91
+ end
92
+
93
+ # Attribute mapping from ruby-style variable name to JSON key.
94
+ def self.attribute_map
95
+ {
96
+ :'thresh_type' => :'thresh_type',
97
+ :'goal_id' => :'goal_id',
98
+ :'client_id' => :'client_id',
99
+ :'conf_tgt' => :'conf_tgt',
100
+ :'risk_score' => :'risk_score',
101
+ :'remove_outliers' => :'remove_outliers',
102
+ :'allocation_priority' => :'allocation_priority',
103
+ :'a_horizon' => :'a_horizon',
104
+ :'withdrawal_config' => :'withdrawal_config',
105
+ :'market_data_source' => :'market_data_source',
106
+ :'compounding_rate' => :'compounding_rate',
107
+ :'adjust_for_compounding' => :'adjust_for_compounding',
108
+ :'opt_config' => :'opt_config',
109
+ :'deposit_config' => :'deposit_config',
110
+ :'use_proxy_data' => :'use_proxy_data',
111
+ :'thresh' => :'thresh',
112
+ :'horizon_frequency' => :'horizon_frequency',
113
+ :'recommendation_config' => :'recommendation_config',
114
+ :'create_log' => :'create_log',
115
+ :'withdrawal_tax' => :'withdrawal_tax',
116
+ :'trading_days_per_year' => :'trading_days_per_year',
117
+ :'allocations' => :'allocations',
118
+ :'n' => :'n',
119
+ :'d_horizon' => :'d_horizon',
120
+ :'curr_inv' => :'curr_inv',
121
+ :'recommend_type' => :'recommend_type',
122
+ :'allocation_method' => :'allocation_method'
123
+ }
124
+ end
125
+
126
+ # Attribute type mapping.
127
+ def self.swagger_types
128
+ {
129
+ :'thresh_type' => :'String',
130
+ :'goal_id' => :'String',
131
+ :'client_id' => :'String',
132
+ :'conf_tgt' => :'Float',
133
+ :'risk_score' => :'Float',
134
+ :'remove_outliers' => :'BOOLEAN',
135
+ :'allocation_priority' => :'String',
136
+ :'a_horizon' => :'Integer',
137
+ :'withdrawal_config' => :'Array<GoalWithdrawalConfig>',
138
+ :'market_data_source' => :'String',
139
+ :'compounding_rate' => :'Float',
140
+ :'adjust_for_compounding' => :'BOOLEAN',
141
+ :'opt_config' => :'OptConfig',
142
+ :'deposit_config' => :'Array<DecumulationGoalDepositConfig>',
143
+ :'use_proxy_data' => :'BOOLEAN',
144
+ :'thresh' => :'Float',
145
+ :'horizon_frequency' => :'String',
146
+ :'recommendation_config' => :'RecommendationConfig',
147
+ :'create_log' => :'BOOLEAN',
148
+ :'withdrawal_tax' => :'Float',
149
+ :'trading_days_per_year' => :'Integer',
150
+ :'allocations' => :'Array<String>',
151
+ :'n' => :'Integer',
152
+ :'d_horizon' => :'Integer',
153
+ :'curr_inv' => :'Float',
154
+ :'recommend_type' => :'String',
155
+ :'allocation_method' => :'String'
156
+ }
157
+ end
158
+
159
+ # Initializes the object
160
+ # @param [Hash] attributes Model attributes in the form of hash
161
+ def initialize(attributes = {})
162
+ return unless attributes.is_a?(Hash)
163
+
164
+ # convert string to symbol for hash key
165
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
166
+
167
+ if attributes.has_key?(:'thresh_type')
168
+ self.thresh_type = attributes[:'thresh_type']
169
+ else
170
+ self.thresh_type = 'perc'
171
+ end
172
+
173
+ if attributes.has_key?(:'goal_id')
174
+ self.goal_id = attributes[:'goal_id']
175
+ end
176
+
177
+ if attributes.has_key?(:'client_id')
178
+ self.client_id = attributes[:'client_id']
179
+ end
180
+
181
+ if attributes.has_key?(:'conf_tgt')
182
+ self.conf_tgt = attributes[:'conf_tgt']
183
+ else
184
+ self.conf_tgt = 0.9
185
+ end
186
+
187
+ if attributes.has_key?(:'risk_score')
188
+ self.risk_score = attributes[:'risk_score']
189
+ end
190
+
191
+ if attributes.has_key?(:'remove_outliers')
192
+ self.remove_outliers = attributes[:'remove_outliers']
193
+ else
194
+ self.remove_outliers = true
195
+ end
196
+
197
+ if attributes.has_key?(:'allocation_priority')
198
+ self.allocation_priority = attributes[:'allocation_priority']
199
+ end
200
+
201
+ if attributes.has_key?(:'a_horizon')
202
+ self.a_horizon = attributes[:'a_horizon']
203
+ end
204
+
205
+ if attributes.has_key?(:'withdrawal_config')
206
+ if (value = attributes[:'withdrawal_config']).is_a?(Array)
207
+ self.withdrawal_config = value
208
+ end
209
+ end
210
+
211
+ if attributes.has_key?(:'market_data_source')
212
+ self.market_data_source = attributes[:'market_data_source']
213
+ else
214
+ self.market_data_source = 'nucleus'
215
+ end
216
+
217
+ if attributes.has_key?(:'compounding_rate')
218
+ self.compounding_rate = attributes[:'compounding_rate']
219
+ else
220
+ self.compounding_rate = 0.0
221
+ end
222
+
223
+ if attributes.has_key?(:'adjust_for_compounding')
224
+ self.adjust_for_compounding = attributes[:'adjust_for_compounding']
225
+ else
226
+ self.adjust_for_compounding = false
227
+ end
228
+
229
+ if attributes.has_key?(:'opt_config')
230
+ self.opt_config = attributes[:'opt_config']
231
+ end
232
+
233
+ if attributes.has_key?(:'deposit_config')
234
+ if (value = attributes[:'deposit_config']).is_a?(Array)
235
+ self.deposit_config = value
236
+ end
237
+ end
238
+
239
+ if attributes.has_key?(:'use_proxy_data')
240
+ self.use_proxy_data = attributes[:'use_proxy_data']
241
+ else
242
+ self.use_proxy_data = false
243
+ end
244
+
245
+ if attributes.has_key?(:'thresh')
246
+ self.thresh = attributes[:'thresh']
247
+ end
248
+
249
+ if attributes.has_key?(:'horizon_frequency')
250
+ self.horizon_frequency = attributes[:'horizon_frequency']
251
+ else
252
+ self.horizon_frequency = 'year'
253
+ end
254
+
255
+ if attributes.has_key?(:'recommendation_config')
256
+ self.recommendation_config = attributes[:'recommendation_config']
257
+ end
258
+
259
+ if attributes.has_key?(:'create_log')
260
+ self.create_log = attributes[:'create_log']
261
+ else
262
+ self.create_log = false
263
+ end
264
+
265
+ if attributes.has_key?(:'withdrawal_tax')
266
+ self.withdrawal_tax = attributes[:'withdrawal_tax']
267
+ else
268
+ self.withdrawal_tax = 0.0
269
+ end
270
+
271
+ if attributes.has_key?(:'trading_days_per_year')
272
+ self.trading_days_per_year = attributes[:'trading_days_per_year']
273
+ else
274
+ self.trading_days_per_year = 252
275
+ end
276
+
277
+ if attributes.has_key?(:'allocations')
278
+ if (value = attributes[:'allocations']).is_a?(Array)
279
+ self.allocations = value
280
+ end
281
+ end
282
+
283
+ if attributes.has_key?(:'n')
284
+ self.n = attributes[:'n']
285
+ else
286
+ self.n = 1000
287
+ end
288
+
289
+ if attributes.has_key?(:'d_horizon')
290
+ self.d_horizon = attributes[:'d_horizon']
291
+ end
292
+
293
+ if attributes.has_key?(:'curr_inv')
294
+ self.curr_inv = attributes[:'curr_inv']
295
+ end
296
+
297
+ if attributes.has_key?(:'recommend_type')
298
+ self.recommend_type = attributes[:'recommend_type']
299
+ else
300
+ self.recommend_type = 'horizon'
301
+ end
302
+
303
+ if attributes.has_key?(:'allocation_method')
304
+ self.allocation_method = attributes[:'allocation_method']
305
+ end
306
+ end
307
+
308
+ # Show invalid properties with the reasons. Usually used together with valid?
309
+ # @return Array for valid properties with the reasons
310
+ def list_invalid_properties
311
+ invalid_properties = Array.new
312
+ if !@conf_tgt.nil? && @conf_tgt > 1
313
+ invalid_properties.push('invalid value for "conf_tgt", must be smaller than or equal to 1.')
314
+ end
315
+
316
+ if !@conf_tgt.nil? && @conf_tgt < 0
317
+ invalid_properties.push('invalid value for "conf_tgt", must be greater than or equal to 0.')
318
+ end
319
+
320
+ if !@risk_score.nil? && @risk_score > 100
321
+ invalid_properties.push('invalid value for "risk_score", must be smaller than or equal to 100.')
322
+ end
323
+
324
+ if !@risk_score.nil? && @risk_score < 0
325
+ invalid_properties.push('invalid value for "risk_score", must be greater than or equal to 0.')
326
+ end
327
+
328
+ if @allocation_priority.nil?
329
+ invalid_properties.push('invalid value for "allocation_priority", allocation_priority cannot be nil.')
330
+ end
331
+
332
+ if !@a_horizon.nil? && @a_horizon > 350
333
+ invalid_properties.push('invalid value for "a_horizon", must be smaller than or equal to 350.')
334
+ end
335
+
336
+ if !@a_horizon.nil? && @a_horizon < 0
337
+ invalid_properties.push('invalid value for "a_horizon", must be greater than or equal to 0.')
338
+ end
339
+
340
+ if !@compounding_rate.nil? && @compounding_rate < -1
341
+ invalid_properties.push('invalid value for "compounding_rate", must be greater than or equal to -1.')
342
+ end
343
+
344
+ if !@thresh.nil? && @thresh < 0
345
+ invalid_properties.push('invalid value for "thresh", must be greater than or equal to 0.')
346
+ end
347
+
348
+ if !@withdrawal_tax.nil? && @withdrawal_tax > 1
349
+ invalid_properties.push('invalid value for "withdrawal_tax", must be smaller than or equal to 1.')
350
+ end
351
+
352
+ if !@withdrawal_tax.nil? && @withdrawal_tax < 0
353
+ invalid_properties.push('invalid value for "withdrawal_tax", must be greater than or equal to 0.')
354
+ end
355
+
356
+ if !@trading_days_per_year.nil? && @trading_days_per_year > 365
357
+ invalid_properties.push('invalid value for "trading_days_per_year", must be smaller than or equal to 365.')
358
+ end
359
+
360
+ if !@trading_days_per_year.nil? && @trading_days_per_year < 1
361
+ invalid_properties.push('invalid value for "trading_days_per_year", must be greater than or equal to 1.')
362
+ end
363
+
364
+ if !@n.nil? && @n > 10000
365
+ invalid_properties.push('invalid value for "n", must be smaller than or equal to 10000.')
366
+ end
367
+
368
+ if !@n.nil? && @n < 1
369
+ invalid_properties.push('invalid value for "n", must be greater than or equal to 1.')
370
+ end
371
+
372
+ if !@d_horizon.nil? && @d_horizon > 350
373
+ invalid_properties.push('invalid value for "d_horizon", must be smaller than or equal to 350.')
374
+ end
375
+
376
+ if !@d_horizon.nil? && @d_horizon < 0
377
+ invalid_properties.push('invalid value for "d_horizon", must be greater than or equal to 0.')
378
+ end
379
+
380
+ if !@curr_inv.nil? && @curr_inv < 0
381
+ invalid_properties.push('invalid value for "curr_inv", must be greater than or equal to 0.')
382
+ end
383
+
384
+ if @allocation_method.nil?
385
+ invalid_properties.push('invalid value for "allocation_method", allocation_method cannot be nil.')
386
+ end
387
+
388
+ invalid_properties
389
+ end
390
+
391
+ # Check to see if the all the properties in the model are valid
392
+ # @return true if the model is valid
393
+ def valid?
394
+ thresh_type_validator = EnumAttributeValidator.new('String', ['amnt', 'perc'])
395
+ return false unless thresh_type_validator.valid?(@thresh_type)
396
+ return false if !@conf_tgt.nil? && @conf_tgt > 1
397
+ return false if !@conf_tgt.nil? && @conf_tgt < 0
398
+ return false if !@risk_score.nil? && @risk_score > 100
399
+ return false if !@risk_score.nil? && @risk_score < 0
400
+ return false if @allocation_priority.nil?
401
+ allocation_priority_validator = EnumAttributeValidator.new('String', ['goal', 'risk'])
402
+ return false unless allocation_priority_validator.valid?(@allocation_priority)
403
+ return false if !@a_horizon.nil? && @a_horizon > 350
404
+ return false if !@a_horizon.nil? && @a_horizon < 0
405
+ market_data_source_validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
406
+ return false unless market_data_source_validator.valid?(@market_data_source)
407
+ return false if !@compounding_rate.nil? && @compounding_rate < -1
408
+ return false if !@thresh.nil? && @thresh < 0
409
+ horizon_frequency_validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
410
+ return false unless horizon_frequency_validator.valid?(@horizon_frequency)
411
+ return false if !@withdrawal_tax.nil? && @withdrawal_tax > 1
412
+ return false if !@withdrawal_tax.nil? && @withdrawal_tax < 0
413
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year > 365
414
+ return false if !@trading_days_per_year.nil? && @trading_days_per_year < 1
415
+ return false if !@n.nil? && @n > 10000
416
+ return false if !@n.nil? && @n < 1
417
+ return false if !@d_horizon.nil? && @d_horizon > 350
418
+ return false if !@d_horizon.nil? && @d_horizon < 0
419
+ return false if !@curr_inv.nil? && @curr_inv < 0
420
+ recommend_type_validator = EnumAttributeValidator.new('String', ['recurring', 'one-time', 'combo', 'horizon'])
421
+ return false unless recommend_type_validator.valid?(@recommend_type)
422
+ return false if @allocation_method.nil?
423
+ allocation_method_validator = EnumAttributeValidator.new('String', ['select', 'create'])
424
+ return false unless allocation_method_validator.valid?(@allocation_method)
425
+ true
426
+ end
427
+
428
+ # Custom attribute writer method checking allowed values (enum).
429
+ # @param [Object] thresh_type Object to be assigned
430
+ def thresh_type=(thresh_type)
431
+ validator = EnumAttributeValidator.new('String', ['amnt', 'perc'])
432
+ unless validator.valid?(thresh_type)
433
+ fail ArgumentError, 'invalid value for "thresh_type", must be one of #{validator.allowable_values}.'
434
+ end
435
+ @thresh_type = thresh_type
436
+ end
437
+
438
+ # Custom attribute writer method with validation
439
+ # @param [Object] conf_tgt Value to be assigned
440
+ def conf_tgt=(conf_tgt)
441
+ if !conf_tgt.nil? && conf_tgt > 1
442
+ fail ArgumentError, 'invalid value for "conf_tgt", must be smaller than or equal to 1.'
443
+ end
444
+
445
+ if !conf_tgt.nil? && conf_tgt < 0
446
+ fail ArgumentError, 'invalid value for "conf_tgt", must be greater than or equal to 0.'
447
+ end
448
+
449
+ @conf_tgt = conf_tgt
450
+ end
451
+
452
+ # Custom attribute writer method with validation
453
+ # @param [Object] risk_score Value to be assigned
454
+ def risk_score=(risk_score)
455
+ if !risk_score.nil? && risk_score > 100
456
+ fail ArgumentError, 'invalid value for "risk_score", must be smaller than or equal to 100.'
457
+ end
458
+
459
+ if !risk_score.nil? && risk_score < 0
460
+ fail ArgumentError, 'invalid value for "risk_score", must be greater than or equal to 0.'
461
+ end
462
+
463
+ @risk_score = risk_score
464
+ end
465
+
466
+ # Custom attribute writer method checking allowed values (enum).
467
+ # @param [Object] allocation_priority Object to be assigned
468
+ def allocation_priority=(allocation_priority)
469
+ validator = EnumAttributeValidator.new('String', ['goal', 'risk'])
470
+ unless validator.valid?(allocation_priority)
471
+ fail ArgumentError, 'invalid value for "allocation_priority", must be one of #{validator.allowable_values}.'
472
+ end
473
+ @allocation_priority = allocation_priority
474
+ end
475
+
476
+ # Custom attribute writer method with validation
477
+ # @param [Object] a_horizon Value to be assigned
478
+ def a_horizon=(a_horizon)
479
+ if !a_horizon.nil? && a_horizon > 350
480
+ fail ArgumentError, 'invalid value for "a_horizon", must be smaller than or equal to 350.'
481
+ end
482
+
483
+ if !a_horizon.nil? && a_horizon < 0
484
+ fail ArgumentError, 'invalid value for "a_horizon", must be greater than or equal to 0.'
485
+ end
486
+
487
+ @a_horizon = a_horizon
488
+ end
489
+
490
+ # Custom attribute writer method checking allowed values (enum).
491
+ # @param [Object] market_data_source Object to be assigned
492
+ def market_data_source=(market_data_source)
493
+ validator = EnumAttributeValidator.new('String', ['nucleus', 'integration'])
494
+ unless validator.valid?(market_data_source)
495
+ fail ArgumentError, 'invalid value for "market_data_source", must be one of #{validator.allowable_values}.'
496
+ end
497
+ @market_data_source = market_data_source
498
+ end
499
+
500
+ # Custom attribute writer method with validation
501
+ # @param [Object] compounding_rate Value to be assigned
502
+ def compounding_rate=(compounding_rate)
503
+ if !compounding_rate.nil? && compounding_rate < -1
504
+ fail ArgumentError, 'invalid value for "compounding_rate", must be greater than or equal to -1.'
505
+ end
506
+
507
+ @compounding_rate = compounding_rate
508
+ end
509
+
510
+ # Custom attribute writer method with validation
511
+ # @param [Object] thresh Value to be assigned
512
+ def thresh=(thresh)
513
+ if !thresh.nil? && thresh < 0
514
+ fail ArgumentError, 'invalid value for "thresh", must be greater than or equal to 0.'
515
+ end
516
+
517
+ @thresh = thresh
518
+ end
519
+
520
+ # Custom attribute writer method checking allowed values (enum).
521
+ # @param [Object] horizon_frequency Object to be assigned
522
+ def horizon_frequency=(horizon_frequency)
523
+ validator = EnumAttributeValidator.new('String', ['year', 'six_months', 'quarter', 'month', 'two_weeks', 'week', 'day'])
524
+ unless validator.valid?(horizon_frequency)
525
+ fail ArgumentError, 'invalid value for "horizon_frequency", must be one of #{validator.allowable_values}.'
526
+ end
527
+ @horizon_frequency = horizon_frequency
528
+ end
529
+
530
+ # Custom attribute writer method with validation
531
+ # @param [Object] withdrawal_tax Value to be assigned
532
+ def withdrawal_tax=(withdrawal_tax)
533
+ if !withdrawal_tax.nil? && withdrawal_tax > 1
534
+ fail ArgumentError, 'invalid value for "withdrawal_tax", must be smaller than or equal to 1.'
535
+ end
536
+
537
+ if !withdrawal_tax.nil? && withdrawal_tax < 0
538
+ fail ArgumentError, 'invalid value for "withdrawal_tax", must be greater than or equal to 0.'
539
+ end
540
+
541
+ @withdrawal_tax = withdrawal_tax
542
+ end
543
+
544
+ # Custom attribute writer method with validation
545
+ # @param [Object] trading_days_per_year Value to be assigned
546
+ def trading_days_per_year=(trading_days_per_year)
547
+ if !trading_days_per_year.nil? && trading_days_per_year > 365
548
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be smaller than or equal to 365.'
549
+ end
550
+
551
+ if !trading_days_per_year.nil? && trading_days_per_year < 1
552
+ fail ArgumentError, 'invalid value for "trading_days_per_year", must be greater than or equal to 1.'
553
+ end
554
+
555
+ @trading_days_per_year = trading_days_per_year
556
+ end
557
+
558
+ # Custom attribute writer method with validation
559
+ # @param [Object] n Value to be assigned
560
+ def n=(n)
561
+ if !n.nil? && n > 10000
562
+ fail ArgumentError, 'invalid value for "n", must be smaller than or equal to 10000.'
563
+ end
564
+
565
+ if !n.nil? && n < 1
566
+ fail ArgumentError, 'invalid value for "n", must be greater than or equal to 1.'
567
+ end
568
+
569
+ @n = n
570
+ end
571
+
572
+ # Custom attribute writer method with validation
573
+ # @param [Object] d_horizon Value to be assigned
574
+ def d_horizon=(d_horizon)
575
+ if !d_horizon.nil? && d_horizon > 350
576
+ fail ArgumentError, 'invalid value for "d_horizon", must be smaller than or equal to 350.'
577
+ end
578
+
579
+ if !d_horizon.nil? && d_horizon < 0
580
+ fail ArgumentError, 'invalid value for "d_horizon", must be greater than or equal to 0.'
581
+ end
582
+
583
+ @d_horizon = d_horizon
584
+ end
585
+
586
+ # Custom attribute writer method with validation
587
+ # @param [Object] curr_inv Value to be assigned
588
+ def curr_inv=(curr_inv)
589
+ if !curr_inv.nil? && curr_inv < 0
590
+ fail ArgumentError, 'invalid value for "curr_inv", must be greater than or equal to 0.'
591
+ end
592
+
593
+ @curr_inv = curr_inv
594
+ end
595
+
596
+ # Custom attribute writer method checking allowed values (enum).
597
+ # @param [Object] recommend_type Object to be assigned
598
+ def recommend_type=(recommend_type)
599
+ validator = EnumAttributeValidator.new('String', ['recurring', 'one-time', 'combo', 'horizon'])
600
+ unless validator.valid?(recommend_type)
601
+ fail ArgumentError, 'invalid value for "recommend_type", must be one of #{validator.allowable_values}.'
602
+ end
603
+ @recommend_type = recommend_type
604
+ end
605
+
606
+ # Custom attribute writer method checking allowed values (enum).
607
+ # @param [Object] allocation_method Object to be assigned
608
+ def allocation_method=(allocation_method)
609
+ validator = EnumAttributeValidator.new('String', ['select', 'create'])
610
+ unless validator.valid?(allocation_method)
611
+ fail ArgumentError, 'invalid value for "allocation_method", must be one of #{validator.allowable_values}.'
612
+ end
613
+ @allocation_method = allocation_method
614
+ end
615
+
616
+ # Checks equality by comparing each attribute.
617
+ # @param [Object] Object to be compared
618
+ def ==(o)
619
+ return true if self.equal?(o)
620
+ self.class == o.class &&
621
+ thresh_type == o.thresh_type &&
622
+ goal_id == o.goal_id &&
623
+ client_id == o.client_id &&
624
+ conf_tgt == o.conf_tgt &&
625
+ risk_score == o.risk_score &&
626
+ remove_outliers == o.remove_outliers &&
627
+ allocation_priority == o.allocation_priority &&
628
+ a_horizon == o.a_horizon &&
629
+ withdrawal_config == o.withdrawal_config &&
630
+ market_data_source == o.market_data_source &&
631
+ compounding_rate == o.compounding_rate &&
632
+ adjust_for_compounding == o.adjust_for_compounding &&
633
+ opt_config == o.opt_config &&
634
+ deposit_config == o.deposit_config &&
635
+ use_proxy_data == o.use_proxy_data &&
636
+ thresh == o.thresh &&
637
+ horizon_frequency == o.horizon_frequency &&
638
+ recommendation_config == o.recommendation_config &&
639
+ create_log == o.create_log &&
640
+ withdrawal_tax == o.withdrawal_tax &&
641
+ trading_days_per_year == o.trading_days_per_year &&
642
+ allocations == o.allocations &&
643
+ n == o.n &&
644
+ d_horizon == o.d_horizon &&
645
+ curr_inv == o.curr_inv &&
646
+ recommend_type == o.recommend_type &&
647
+ allocation_method == o.allocation_method
648
+ end
649
+
650
+ # @see the `==` method
651
+ # @param [Object] Object to be compared
652
+ def eql?(o)
653
+ self == o
654
+ end
655
+
656
+ # Calculates hash code according to all attributes.
657
+ # @return [Fixnum] Hash code
658
+ def hash
659
+ [thresh_type, goal_id, client_id, conf_tgt, risk_score, remove_outliers, allocation_priority, a_horizon, withdrawal_config, market_data_source, compounding_rate, adjust_for_compounding, opt_config, deposit_config, use_proxy_data, thresh, horizon_frequency, recommendation_config, create_log, withdrawal_tax, trading_days_per_year, allocations, n, d_horizon, curr_inv, recommend_type, allocation_method].hash
660
+ end
661
+
662
+ # Builds the object from hash
663
+ # @param [Hash] attributes Model attributes in the form of hash
664
+ # @return [Object] Returns the model itself
665
+ def build_from_hash(attributes)
666
+ return nil unless attributes.is_a?(Hash)
667
+ self.class.swagger_types.each_pair do |key, type|
668
+ if type =~ /\AArray<(.*)>/i
669
+ # check to ensure the input is an array given that the attribute
670
+ # is documented as an array but the input is not
671
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
672
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
673
+ end
674
+ elsif !attributes[self.class.attribute_map[key]].nil?
675
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
676
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
677
+ end
678
+
679
+ self
680
+ end
681
+
682
+ # Deserializes the data based on type
683
+ # @param string type Data type
684
+ # @param string value Value to be deserialized
685
+ # @return [Object] Deserialized data
686
+ def _deserialize(type, value)
687
+ case type.to_sym
688
+ when :DateTime
689
+ DateTime.parse(value)
690
+ when :Date
691
+ Date.parse(value)
692
+ when :String
693
+ value.to_s
694
+ when :Integer
695
+ value.to_i
696
+ when :Float
697
+ value.to_f
698
+ when :BOOLEAN
699
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
700
+ true
701
+ else
702
+ false
703
+ end
704
+ when :Object
705
+ # generic object (usually a Hash), return directly
706
+ value
707
+ when /\AArray<(?<inner_type>.+)>\z/
708
+ inner_type = Regexp.last_match[:inner_type]
709
+ value.map { |v| _deserialize(inner_type, v) }
710
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
711
+ k_type = Regexp.last_match[:k_type]
712
+ v_type = Regexp.last_match[:v_type]
713
+ {}.tap do |hash|
714
+ value.each do |k, v|
715
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
716
+ end
717
+ end
718
+ else # model
719
+ temp_model = ProtonApi.const_get(type).new
720
+ temp_model.build_from_hash(value)
721
+ end
722
+ end
723
+
724
+ # Returns the string representation of the object
725
+ # @return [String] String presentation of the object
726
+ def to_s
727
+ to_hash.to_s
728
+ end
729
+
730
+ # to_body is an alias to to_hash (backward compatibility)
731
+ # @return [Hash] Returns the object in the form of hash
732
+ def to_body
733
+ to_hash
734
+ end
735
+
736
+ # Returns the object in the form of hash
737
+ # @return [Hash] Returns the object in the form of hash
738
+ def to_hash
739
+ hash = {}
740
+ self.class.attribute_map.each_pair do |attr, param|
741
+ value = self.send(attr)
742
+ next if value.nil?
743
+ hash[param] = _to_hash(value)
744
+ end
745
+ hash
746
+ end
747
+
748
+ # Outputs non-array value in the form of hash
749
+ # For object, use to_hash. Otherwise, just return the value
750
+ # @param [Object] value Any valid value
751
+ # @return [Hash] Returns the value in the form of hash
752
+ def _to_hash(value)
753
+ if value.is_a?(Array)
754
+ value.compact.map { |v| _to_hash(v) }
755
+ elsif value.is_a?(Hash)
756
+ {}.tap do |hash|
757
+ value.each { |k, v| hash[k] = _to_hash(v) }
758
+ end
759
+ elsif value.respond_to? :to_hash
760
+ value.to_hash
761
+ else
762
+ value
763
+ end
764
+ end
765
+
766
+ end
767
+ end