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