snaptrade 1.16.2 → 1.16.3

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 (309) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -10
  3. data/Gemfile.lock +16 -8
  4. data/README.md +222 -221
  5. data/docs/APIStatusApi.md +57 -57
  6. data/docs/AccountInformationApi.md +535 -535
  7. data/docs/AuthenticationApi.md +314 -314
  8. data/docs/BrokerageSymbolOptionSymbol.md +7 -5
  9. data/docs/ConnectionsApi.md +265 -265
  10. data/docs/ErrorLogsApi.md +68 -68
  11. data/docs/MonthlyDividends.md +1 -1
  12. data/docs/NetContributions.md +1 -1
  13. data/docs/OptionType.md +15 -0
  14. data/docs/OptionsApi.md +378 -378
  15. data/docs/OptionsSymbol.md +7 -5
  16. data/docs/PastValue.md +1 -1
  17. data/docs/ReferenceDataApi.md +595 -595
  18. data/docs/SubPeriodReturnRate.md +2 -2
  19. data/docs/TradingApi.md +478 -478
  20. data/docs/TransactionsAndReportingApi.md +183 -183
  21. data/docs/TransactionsStatus.md +1 -1
  22. data/lib/snaptrade/api/account_information_api.rb +801 -801
  23. data/lib/snaptrade/api/api_status_api.rb +98 -98
  24. data/lib/snaptrade/api/authentication_api.rb +481 -481
  25. data/lib/snaptrade/api/connections_api.rb +398 -398
  26. data/lib/snaptrade/api/error_logs_api.rb +112 -112
  27. data/lib/snaptrade/api/options_api.rb +591 -591
  28. data/lib/snaptrade/api/reference_data_api.rb +894 -894
  29. data/lib/snaptrade/api/trading_api.rb +741 -741
  30. data/lib/snaptrade/api/transactions_and_reporting_api.rb +283 -283
  31. data/lib/snaptrade/api_client.rb +427 -427
  32. data/lib/snaptrade/api_client_custom.rb +32 -32
  33. data/lib/snaptrade/api_error.rb +6 -6
  34. data/lib/snaptrade/configuration.rb +341 -341
  35. data/lib/snaptrade/models/account.rb +6 -6
  36. data/lib/snaptrade/models/account_holdings.rb +6 -6
  37. data/lib/snaptrade/models/account_holdings_account.rb +6 -6
  38. data/lib/snaptrade/models/account_order_record.rb +6 -6
  39. data/lib/snaptrade/models/account_order_record_status.rb +6 -6
  40. data/lib/snaptrade/models/account_simple.rb +6 -6
  41. data/lib/snaptrade/models/account_sync_status.rb +6 -6
  42. data/lib/snaptrade/models/action.rb +6 -6
  43. data/lib/snaptrade/models/auth_type.rb +6 -6
  44. data/lib/snaptrade/models/authentication_login_snap_trade_user200_response.rb +6 -6
  45. data/lib/snaptrade/models/balance.rb +6 -6
  46. data/lib/snaptrade/models/brokerage.rb +6 -6
  47. data/lib/snaptrade/models/brokerage_authorization.rb +6 -6
  48. data/lib/snaptrade/models/brokerage_authorization_type.rb +6 -6
  49. data/lib/snaptrade/models/brokerage_authorization_type_read_only.rb +6 -6
  50. data/lib/snaptrade/models/brokerage_authorization_type_read_only_brokerage.rb +6 -6
  51. data/lib/snaptrade/models/brokerage_authorization_type_read_only_type.rb +6 -6
  52. data/lib/snaptrade/models/brokerage_authorization_type_type.rb +6 -6
  53. data/lib/snaptrade/models/brokerage_symbol.rb +6 -6
  54. data/lib/snaptrade/models/brokerage_symbol_option_symbol.rb +46 -7
  55. data/lib/snaptrade/models/brokerage_symbol_symbol.rb +6 -6
  56. data/lib/snaptrade/models/brokerage_type.rb +6 -6
  57. data/lib/snaptrade/models/calculated_trade.rb +6 -6
  58. data/lib/snaptrade/models/cash_restriction.rb +6 -6
  59. data/lib/snaptrade/models/connection_type.rb +6 -6
  60. data/lib/snaptrade/models/connections_session_events200_response_inner.rb +6 -6
  61. data/lib/snaptrade/models/currency.rb +6 -6
  62. data/lib/snaptrade/models/delete_user_response.rb +6 -6
  63. data/lib/snaptrade/models/dividend_at_date.rb +6 -6
  64. data/lib/snaptrade/models/encrypted_response.rb +6 -6
  65. data/lib/snaptrade/models/encrypted_response_encrypted_message_data.rb +6 -6
  66. data/lib/snaptrade/models/exchange.rb +6 -6
  67. data/lib/snaptrade/models/exchange_rate_pairs.rb +6 -6
  68. data/lib/snaptrade/models/excluded_asset.rb +6 -6
  69. data/lib/snaptrade/models/jwt.rb +6 -6
  70. data/lib/snaptrade/models/login_redirect_uri.rb +6 -6
  71. data/lib/snaptrade/models/manual_trade.rb +6 -6
  72. data/lib/snaptrade/models/manual_trade_and_impact.rb +6 -6
  73. data/lib/snaptrade/models/manual_trade_balance.rb +6 -6
  74. data/lib/snaptrade/models/manual_trade_form.rb +6 -6
  75. data/lib/snaptrade/models/manual_trade_symbol.rb +6 -6
  76. data/lib/snaptrade/models/model400_failed_request_response.rb +6 -6
  77. data/lib/snaptrade/models/model401_failed_request_response.rb +6 -6
  78. data/lib/snaptrade/models/model403_failed_request_response.rb +6 -6
  79. data/lib/snaptrade/models/model404_failed_request_response.rb +6 -6
  80. data/lib/snaptrade/models/model_asset_class.rb +6 -6
  81. data/lib/snaptrade/models/model_asset_class_details.rb +6 -6
  82. data/lib/snaptrade/models/model_asset_class_target.rb +6 -6
  83. data/lib/snaptrade/models/model_portfolio.rb +6 -6
  84. data/lib/snaptrade/models/model_portfolio_asset_class.rb +6 -6
  85. data/lib/snaptrade/models/model_portfolio_details.rb +6 -6
  86. data/lib/snaptrade/models/model_portfolio_security.rb +6 -6
  87. data/lib/snaptrade/models/model_type.rb +6 -6
  88. data/lib/snaptrade/models/monthly_dividends.rb +6 -6
  89. data/lib/snaptrade/models/net_contributions.rb +6 -6
  90. data/lib/snaptrade/models/net_dividend.rb +6 -6
  91. data/lib/snaptrade/models/option_chain_inner.rb +6 -6
  92. data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner.rb +6 -6
  93. data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner.rb +6 -6
  94. data/lib/snaptrade/models/option_leg.rb +6 -6
  95. data/lib/snaptrade/models/option_leg_action.rb +6 -6
  96. data/lib/snaptrade/models/option_strategy.rb +6 -6
  97. data/lib/snaptrade/models/option_strategy_legs_inner.rb +6 -6
  98. data/lib/snaptrade/models/option_type.rb +38 -0
  99. data/lib/snaptrade/models/options_get_option_strategy_request.rb +6 -6
  100. data/lib/snaptrade/models/options_holdings.rb +6 -6
  101. data/lib/snaptrade/models/options_place_option_strategy_request.rb +6 -6
  102. data/lib/snaptrade/models/options_position.rb +6 -6
  103. data/lib/snaptrade/models/options_position_currency.rb +6 -6
  104. data/lib/snaptrade/models/options_symbol.rb +46 -7
  105. data/lib/snaptrade/models/order_strategy_execute_body_order_type.rb +6 -6
  106. data/lib/snaptrade/models/order_strategy_execute_body_time_in_force.rb +6 -6
  107. data/lib/snaptrade/models/order_type.rb +6 -6
  108. data/lib/snaptrade/models/partner_data.rb +6 -6
  109. data/lib/snaptrade/models/past_value.rb +6 -6
  110. data/lib/snaptrade/models/performance_custom.rb +6 -6
  111. data/lib/snaptrade/models/portfolio_group.rb +6 -6
  112. data/lib/snaptrade/models/portfolio_group_info.rb +6 -6
  113. data/lib/snaptrade/models/portfolio_group_position.rb +6 -6
  114. data/lib/snaptrade/models/portfolio_group_settings.rb +6 -6
  115. data/lib/snaptrade/models/position.rb +6 -6
  116. data/lib/snaptrade/models/position_symbol.rb +6 -6
  117. data/lib/snaptrade/models/redirect_tokenand_pin.rb +6 -6
  118. data/lib/snaptrade/models/security_type.rb +6 -6
  119. data/lib/snaptrade/models/session_event.rb +6 -6
  120. data/lib/snaptrade/models/session_event_type.rb +6 -6
  121. data/lib/snaptrade/models/snap_trade_api_disclaimer_accept_status.rb +6 -6
  122. data/lib/snaptrade/models/snap_trade_holdings_account.rb +6 -6
  123. data/lib/snaptrade/models/snap_trade_holdings_account_account_id.rb +6 -6
  124. data/lib/snaptrade/models/snap_trade_holdings_total_value.rb +6 -6
  125. data/lib/snaptrade/models/snap_trade_login_user_request_body.rb +6 -6
  126. data/lib/snaptrade/models/snap_trade_register_user_request_body.rb +6 -6
  127. data/lib/snaptrade/models/state.rb +6 -6
  128. data/lib/snaptrade/models/status.rb +6 -6
  129. data/lib/snaptrade/models/strategy_impact.rb +6 -6
  130. data/lib/snaptrade/models/strategy_impact_legs_inner.rb +6 -6
  131. data/lib/snaptrade/models/strategy_order_place.rb +6 -6
  132. data/lib/snaptrade/models/strategy_order_place_orders_inner.rb +6 -6
  133. data/lib/snaptrade/models/strategy_order_place_orders_inner_legs_inner.rb +6 -6
  134. data/lib/snaptrade/models/strategy_order_record.rb +6 -6
  135. data/lib/snaptrade/models/strategy_order_record_order_type.rb +6 -6
  136. data/lib/snaptrade/models/strategy_order_record_status.rb +6 -6
  137. data/lib/snaptrade/models/strategy_order_record_time_in_force.rb +6 -6
  138. data/lib/snaptrade/models/strategy_quotes.rb +6 -6
  139. data/lib/snaptrade/models/strategy_quotes_greek.rb +6 -6
  140. data/lib/snaptrade/models/strategy_type.rb +6 -6
  141. data/lib/snaptrade/models/sub_period_return_rate.rb +6 -6
  142. data/lib/snaptrade/models/symbol.rb +6 -6
  143. data/lib/snaptrade/models/symbol_query.rb +6 -6
  144. data/lib/snaptrade/models/symbols_quotes_inner.rb +6 -6
  145. data/lib/snaptrade/models/target_asset.rb +6 -6
  146. data/lib/snaptrade/models/time_in_force.rb +6 -6
  147. data/lib/snaptrade/models/trade.rb +6 -6
  148. data/lib/snaptrade/models/trade_action.rb +6 -6
  149. data/lib/snaptrade/models/trade_execution_status.rb +6 -6
  150. data/lib/snaptrade/models/trade_execution_status_action.rb +6 -6
  151. data/lib/snaptrade/models/trade_impact.rb +6 -6
  152. data/lib/snaptrade/models/trading_cancel_user_account_order_request.rb +6 -6
  153. data/lib/snaptrade/models/trading_place_oco_order_request.rb +6 -6
  154. data/lib/snaptrade/models/transactions_status.rb +6 -6
  155. data/lib/snaptrade/models/type.rb +6 -6
  156. data/lib/snaptrade/models/underlying_symbol.rb +6 -6
  157. data/lib/snaptrade/models/universal_activity.rb +6 -6
  158. data/lib/snaptrade/models/universal_symbol.rb +6 -6
  159. data/lib/snaptrade/models/universal_symbol_ticker.rb +6 -6
  160. data/lib/snaptrade/models/us_exchange.rb +6 -6
  161. data/lib/snaptrade/models/user_error_log.rb +6 -6
  162. data/lib/snaptrade/models/user_i_dand_secret.rb +6 -6
  163. data/lib/snaptrade/models/user_settings.rb +6 -6
  164. data/lib/snaptrade/version.rb +7 -7
  165. data/lib/snaptrade.rb +215 -214
  166. data/snaptrade.gemspec +41 -41
  167. data/spec/api/account_information_api_spec.rb +135 -135
  168. data/spec/api/api_status_api_spec.rb +42 -42
  169. data/spec/api/authentication_api_spec.rb +88 -88
  170. data/spec/api/connections_api_spec.rb +82 -82
  171. data/spec/api/error_logs_api_spec.rb +43 -43
  172. data/spec/api/options_api_spec.rb +101 -101
  173. data/spec/api/reference_data_api_spec.rb +150 -150
  174. data/spec/api/trading_api_spec.rb +112 -112
  175. data/spec/api/transactions_and_reporting_api_spec.rb +67 -67
  176. data/spec/api_client_spec.rb +193 -193
  177. data/spec/configuration_spec.rb +6 -6
  178. data/spec/getting_started_spec.rb +114 -114
  179. data/spec/models/account_holdings_account_spec.rb +54 -54
  180. data/spec/models/account_holdings_spec.rb +48 -48
  181. data/spec/models/account_order_record_spec.rb +132 -132
  182. data/spec/models/account_order_record_status_spec.rb +24 -24
  183. data/spec/models/account_simple_spec.rb +48 -48
  184. data/spec/models/account_spec.rb +84 -84
  185. data/spec/models/account_sync_status_spec.rb +30 -30
  186. data/spec/models/action_spec.rb +24 -24
  187. data/spec/models/auth_type_spec.rb +24 -24
  188. data/spec/models/authentication_login_snap_trade_user200_response_spec.rb +27 -27
  189. data/spec/models/balance_spec.rb +36 -36
  190. data/spec/models/brokerage_authorization_spec.rb +78 -78
  191. data/spec/models/brokerage_authorization_type_read_only_brokerage_spec.rb +42 -42
  192. data/spec/models/brokerage_authorization_type_read_only_spec.rb +48 -48
  193. data/spec/models/brokerage_authorization_type_read_only_type_spec.rb +24 -24
  194. data/spec/models/brokerage_authorization_type_spec.rb +30 -30
  195. data/spec/models/brokerage_authorization_type_type_spec.rb +24 -24
  196. data/spec/models/brokerage_spec.rb +132 -132
  197. data/spec/models/brokerage_symbol_option_symbol_spec.rb +78 -72
  198. data/spec/models/brokerage_symbol_spec.rb +60 -60
  199. data/spec/models/brokerage_symbol_symbol_spec.rb +72 -72
  200. data/spec/models/brokerage_type_spec.rb +36 -36
  201. data/spec/models/calculated_trade_spec.rb +36 -36
  202. data/spec/models/cash_restriction_spec.rb +54 -54
  203. data/spec/models/connection_type_spec.rb +24 -24
  204. data/spec/models/connections_session_events200_response_inner_spec.rb +66 -66
  205. data/spec/models/currency_spec.rb +42 -42
  206. data/spec/models/delete_user_response_spec.rb +36 -36
  207. data/spec/models/dividend_at_date_spec.rb +42 -42
  208. data/spec/models/encrypted_response_encrypted_message_data_spec.rb +42 -42
  209. data/spec/models/encrypted_response_spec.rb +36 -36
  210. data/spec/models/exchange_rate_pairs_spec.rb +42 -42
  211. data/spec/models/exchange_spec.rb +72 -72
  212. data/spec/models/excluded_asset_spec.rb +30 -30
  213. data/spec/models/jwt_spec.rb +30 -30
  214. data/spec/models/login_redirect_uri_spec.rb +36 -36
  215. data/spec/models/manual_trade_and_impact_spec.rb +42 -42
  216. data/spec/models/manual_trade_balance_spec.rb +42 -42
  217. data/spec/models/manual_trade_form_spec.rb +72 -72
  218. data/spec/models/manual_trade_spec.rb +72 -72
  219. data/spec/models/manual_trade_symbol_spec.rb +60 -60
  220. data/spec/models/model400_failed_request_response_spec.rb +36 -36
  221. data/spec/models/model401_failed_request_response_spec.rb +36 -36
  222. data/spec/models/model403_failed_request_response_spec.rb +36 -36
  223. data/spec/models/model404_failed_request_response_spec.rb +36 -36
  224. data/spec/models/model_asset_class_details_spec.rb +36 -36
  225. data/spec/models/model_asset_class_spec.rb +36 -36
  226. data/spec/models/model_asset_class_target_spec.rb +30 -30
  227. data/spec/models/model_portfolio_asset_class_spec.rb +36 -36
  228. data/spec/models/model_portfolio_details_spec.rb +42 -42
  229. data/spec/models/model_portfolio_security_spec.rb +36 -36
  230. data/spec/models/model_portfolio_spec.rb +42 -42
  231. data/spec/models/model_type_spec.rb +24 -24
  232. data/spec/models/monthly_dividends_spec.rb +36 -36
  233. data/spec/models/net_contributions_spec.rb +42 -42
  234. data/spec/models/net_dividend_spec.rb +42 -42
  235. data/spec/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner_spec.rb +42 -42
  236. data/spec/models/option_chain_inner_chain_per_root_inner_spec.rb +42 -42
  237. data/spec/models/option_chain_inner_spec.rb +54 -54
  238. data/spec/models/option_leg_action_spec.rb +24 -24
  239. data/spec/models/option_leg_spec.rb +42 -42
  240. data/spec/models/option_strategy_legs_inner_spec.rb +48 -48
  241. data/spec/models/option_strategy_spec.rb +54 -54
  242. data/spec/models/option_type_spec.rb +24 -0
  243. data/spec/models/options_get_option_strategy_request_spec.rb +42 -42
  244. data/spec/models/options_holdings_spec.rb +60 -60
  245. data/spec/models/options_place_option_strategy_request_spec.rb +42 -42
  246. data/spec/models/options_position_currency_spec.rb +42 -42
  247. data/spec/models/options_position_spec.rb +66 -66
  248. data/spec/models/options_symbol_spec.rb +78 -72
  249. data/spec/models/order_strategy_execute_body_order_type_spec.rb +24 -24
  250. data/spec/models/order_strategy_execute_body_time_in_force_spec.rb +24 -24
  251. data/spec/models/order_type_spec.rb +24 -24
  252. data/spec/models/partner_data_spec.rb +96 -96
  253. data/spec/models/past_value_spec.rb +42 -42
  254. data/spec/models/performance_custom_spec.rb +138 -138
  255. data/spec/models/portfolio_group_info_spec.rb +90 -90
  256. data/spec/models/portfolio_group_position_spec.rb +42 -42
  257. data/spec/models/portfolio_group_settings_spec.rb +54 -54
  258. data/spec/models/portfolio_group_spec.rb +36 -36
  259. data/spec/models/position_spec.rb +60 -60
  260. data/spec/models/position_symbol_spec.rb +60 -60
  261. data/spec/models/redirect_tokenand_pin_spec.rb +36 -36
  262. data/spec/models/security_type_spec.rb +48 -48
  263. data/spec/models/session_event_spec.rb +66 -66
  264. data/spec/models/session_event_type_spec.rb +24 -24
  265. data/spec/models/snap_trade_api_disclaimer_accept_status_spec.rb +36 -36
  266. data/spec/models/snap_trade_holdings_account_account_id_spec.rb +78 -78
  267. data/spec/models/snap_trade_holdings_account_spec.rb +72 -72
  268. data/spec/models/snap_trade_holdings_total_value_spec.rb +36 -36
  269. data/spec/models/snap_trade_login_user_request_body_spec.rb +54 -54
  270. data/spec/models/snap_trade_register_user_request_body_spec.rb +36 -36
  271. data/spec/models/state_spec.rb +24 -24
  272. data/spec/models/status_spec.rb +42 -42
  273. data/spec/models/strategy_impact_legs_inner_spec.rb +66 -66
  274. data/spec/models/strategy_impact_spec.rb +90 -90
  275. data/spec/models/strategy_order_place_orders_inner_legs_inner_spec.rb +66 -66
  276. data/spec/models/strategy_order_place_orders_inner_spec.rb +282 -282
  277. data/spec/models/strategy_order_place_spec.rb +36 -36
  278. data/spec/models/strategy_order_record_order_type_spec.rb +24 -24
  279. data/spec/models/strategy_order_record_spec.rb +90 -90
  280. data/spec/models/strategy_order_record_status_spec.rb +24 -24
  281. data/spec/models/strategy_order_record_time_in_force_spec.rb +24 -24
  282. data/spec/models/strategy_quotes_greek_spec.rb +54 -54
  283. data/spec/models/strategy_quotes_spec.rb +60 -60
  284. data/spec/models/strategy_type_spec.rb +24 -24
  285. data/spec/models/sub_period_return_rate_spec.rb +42 -42
  286. data/spec/models/symbol_query_spec.rb +30 -30
  287. data/spec/models/symbol_spec.rb +66 -66
  288. data/spec/models/symbols_quotes_inner_spec.rb +60 -60
  289. data/spec/models/target_asset_spec.rb +60 -60
  290. data/spec/models/time_in_force_spec.rb +24 -24
  291. data/spec/models/trade_action_spec.rb +24 -24
  292. data/spec/models/trade_execution_status_action_spec.rb +24 -24
  293. data/spec/models/trade_execution_status_spec.rb +78 -78
  294. data/spec/models/trade_impact_spec.rb +54 -54
  295. data/spec/models/trade_spec.rb +72 -72
  296. data/spec/models/trading_cancel_user_account_order_request_spec.rb +30 -30
  297. data/spec/models/trading_place_oco_order_request_spec.rb +36 -36
  298. data/spec/models/transactions_status_spec.rb +36 -36
  299. data/spec/models/type_spec.rb +24 -24
  300. data/spec/models/underlying_symbol_spec.rb +66 -66
  301. data/spec/models/universal_activity_spec.rb +126 -126
  302. data/spec/models/universal_symbol_spec.rb +72 -72
  303. data/spec/models/universal_symbol_ticker_spec.rb +72 -72
  304. data/spec/models/us_exchange_spec.rb +78 -78
  305. data/spec/models/user_error_log_spec.rb +60 -60
  306. data/spec/models/user_i_dand_secret_spec.rb +36 -36
  307. data/spec/models/user_settings_spec.rb +84 -84
  308. data/spec/spec_helper.rb +6 -6
  309. metadata +119 -115
@@ -1,116 +1,116 @@
1
- =begin
2
- #SnapTrade
3
-
4
- #Connect brokerage accounts to your app for live positions and trading
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: api@snaptrade.com
8
-
9
- =end
10
-
11
- module SnapTrade
12
- class Configuration
13
- # Defines url scheme
14
- attr_accessor :scheme
15
-
16
- # Defines url host
17
- attr_accessor :host
18
-
19
- # Defines url base path
20
- attr_accessor :base_path
21
-
22
- # Define server configuration index
23
- attr_accessor :server_index
24
-
25
- # Define server operation configuration index
26
- attr_accessor :server_operation_index
27
-
28
- # Default server variables
29
- attr_accessor :server_variables
30
-
31
- # Default server operation variables
32
- attr_accessor :server_operation_variables
33
-
34
- def client_id=(value)
35
- @api_key['PartnerClientId'] = value
36
- end
37
-
38
- def signature=(value)
39
- @api_key['PartnerSignature'] = value
40
- end
41
-
42
- def timestamp=(value)
43
- @api_key['PartnerTimestamp'] = value
44
- end
45
-
46
- # client state configured through konfig.yaml
47
- attr_accessor :consumer_key
48
-
49
- def consumer_key=(value)
50
- if value.nil? || value.empty?
51
- raise ArgumentError, "Invalid value for consumer_key, must be non-empty string"
52
- end
53
- @consumer_key = value
54
- end
55
-
56
- # Defines API keys used with API Key authentications.
57
- #
58
- # @return [Hash] key: parameter name, value: parameter value (API key)
59
- #
60
- # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string)
61
- # config.api_key['api_key'] = 'xxx'
62
- attr_accessor :api_key
63
-
64
- # Defines API key prefixes used with API Key authentications.
65
- #
66
- # @return [Hash] key: parameter name, value: API key prefix
67
- #
68
- # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers)
69
- # config.api_key_prefix['api_key'] = 'Token'
70
- attr_accessor :api_key_prefix
71
-
72
- # Defines the username used with HTTP basic authentication.
73
- #
74
- # @return [String]
75
- attr_accessor :username
76
-
77
- # Defines the password used with HTTP basic authentication.
78
- #
79
- # @return [String]
80
- attr_accessor :password
81
-
82
- # Defines the access token (Bearer) used with OAuth2.
83
- attr_accessor :access_token
84
-
85
- # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
86
- # details will be logged with `logger.debug` (see the `logger` attribute).
87
- # Default to false.
88
- #
89
- # @return [true, false]
90
- attr_accessor :debugging
91
-
92
- # Defines the logger used for debugging.
93
- # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
94
- #
95
- # @return [#debug]
96
- attr_accessor :logger
97
-
98
- # Defines the temporary folder to store downloaded files
99
- # (for API endpoints that have file response).
100
- # Default to use `Tempfile`.
101
- #
102
- # @return [String]
103
- attr_accessor :temp_folder_path
104
-
105
- # The time limit for HTTP request in seconds.
106
- # Default to 0 (never times out).
107
- attr_accessor :timeout
108
-
109
- # Set this to false to skip client side validation in the operation.
110
- # Default to true.
111
- # @return [true, false]
112
- attr_accessor :client_side_validation
113
-
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+
9
+ =end
10
+
11
+ module SnapTrade
12
+ class Configuration
13
+ # Defines url scheme
14
+ attr_accessor :scheme
15
+
16
+ # Defines url host
17
+ attr_accessor :host
18
+
19
+ # Defines url base path
20
+ attr_accessor :base_path
21
+
22
+ # Define server configuration index
23
+ attr_accessor :server_index
24
+
25
+ # Define server operation configuration index
26
+ attr_accessor :server_operation_index
27
+
28
+ # Default server variables
29
+ attr_accessor :server_variables
30
+
31
+ # Default server operation variables
32
+ attr_accessor :server_operation_variables
33
+
34
+ def client_id=(value)
35
+ @api_key['PartnerClientId'] = value
36
+ end
37
+
38
+ def signature=(value)
39
+ @api_key['PartnerSignature'] = value
40
+ end
41
+
42
+ def timestamp=(value)
43
+ @api_key['PartnerTimestamp'] = value
44
+ end
45
+
46
+ # client state configured through konfig.yaml
47
+ attr_accessor :consumer_key
48
+
49
+ def consumer_key=(value)
50
+ if value.nil? || value.empty?
51
+ raise ArgumentError, "Invalid value for consumer_key, must be non-empty string"
52
+ end
53
+ @consumer_key = value
54
+ end
55
+
56
+ # Defines API keys used with API Key authentications.
57
+ #
58
+ # @return [Hash] key: parameter name, value: parameter value (API key)
59
+ #
60
+ # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string)
61
+ # config.api_key['api_key'] = 'xxx'
62
+ attr_accessor :api_key
63
+
64
+ # Defines API key prefixes used with API Key authentications.
65
+ #
66
+ # @return [Hash] key: parameter name, value: API key prefix
67
+ #
68
+ # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers)
69
+ # config.api_key_prefix['api_key'] = 'Token'
70
+ attr_accessor :api_key_prefix
71
+
72
+ # Defines the username used with HTTP basic authentication.
73
+ #
74
+ # @return [String]
75
+ attr_accessor :username
76
+
77
+ # Defines the password used with HTTP basic authentication.
78
+ #
79
+ # @return [String]
80
+ attr_accessor :password
81
+
82
+ # Defines the access token (Bearer) used with OAuth2.
83
+ attr_accessor :access_token
84
+
85
+ # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
86
+ # details will be logged with `logger.debug` (see the `logger` attribute).
87
+ # Default to false.
88
+ #
89
+ # @return [true, false]
90
+ attr_accessor :debugging
91
+
92
+ # Defines the logger used for debugging.
93
+ # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
94
+ #
95
+ # @return [#debug]
96
+ attr_accessor :logger
97
+
98
+ # Defines the temporary folder to store downloaded files
99
+ # (for API endpoints that have file response).
100
+ # Default to use `Tempfile`.
101
+ #
102
+ # @return [String]
103
+ attr_accessor :temp_folder_path
104
+
105
+ # The time limit for HTTP request in seconds.
106
+ # Default to 0 (never times out).
107
+ attr_accessor :timeout
108
+
109
+ # Set this to false to skip client side validation in the operation.
110
+ # Default to true.
111
+ # @return [true, false]
112
+ attr_accessor :client_side_validation
113
+
114
114
  ### TLS/SSL setting
115
115
  # Set this to false to skip verifying SSL certificate when calling API from https server.
116
116
  # Default to true.
@@ -151,231 +151,231 @@ module SnapTrade
151
151
  # @see The params_encoder option of Faraday. Related source code:
152
152
  # https://github.com/lostisland/faraday/tree/main/lib/faraday/encoders
153
153
  attr_accessor :params_encoder
154
-
155
-
156
- attr_accessor :inject_format
157
-
158
- attr_accessor :force_ending_format
159
-
160
- def initialize
161
- @scheme = 'https'
162
- @host = 'api.snaptrade.com'
163
- @base_path = '/api/v1'
164
- @server_index = 0
165
- @server_operation_index = {}
166
- @server_variables = {}
167
- @server_operation_variables = {}
168
- @api_key = {}
169
- @api_key_prefix = {}
170
- @client_side_validation = true
171
- @ssl_verify = true
172
- @ssl_verify_mode = nil
173
- @ssl_ca_file = nil
174
- @ssl_client_cert = nil
175
- @ssl_client_key = nil
176
- @middlewares = Hash.new { |h, k| h[k] = [] }
177
- @timeout = 60
178
- # return data as binary instead of file
179
- @return_binary_data = false
180
- @params_encoder = nil
181
- @debugging = false
182
- @inject_format = false
183
- @force_ending_format = false
184
- @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
185
-
186
- yield(self) if block_given?
187
- end
188
-
189
- # The default Configuration object.
190
- def self.default
191
- @@default ||= Configuration.new
192
- end
193
-
194
- def configure
195
- yield(self) if block_given?
196
- end
197
-
198
- def scheme=(scheme)
199
- # remove :// from scheme
200
- @scheme = scheme.sub(/:\/\//, '')
201
- end
202
-
203
- def host=(host)
204
- # remove http(s):// and anything after a slash
205
- @host = host.sub(/https?:\/\//, '').split('/').first
206
-
207
- # try to set @scheme and @base_path if possible
208
- begin
209
- uri = URI.parse(host)
210
- @scheme = uri.scheme
211
- @base_path = uri.path
212
- rescue InvalidURIError
213
- end
214
-
215
- # unset server_index so host is used when getting request url (see ApiClient#build_request_url)
216
- @server_index = nil
217
- end
218
-
219
- def base_path=(base_path)
220
- # Add leading and trailing slashes to base_path
221
- @base_path = "/#{base_path}".gsub(/\/+/, '/')
222
- @base_path = '' if @base_path == '/'
223
- end
224
-
225
- # Returns base URL for specified operation based on server settings
226
- def base_url(operation = nil)
227
- index = server_operation_index.fetch(operation, server_index)
228
- return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
229
-
230
- server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
231
- end
232
-
233
- # Gets API key (with prefix if set).
234
- # @param [String] param_name the parameter name of API key auth
235
- def api_key_with_prefix(param_name, param_alias = nil)
236
- key = @api_key[param_name]
237
- key = @api_key.fetch(param_alias, key) unless param_alias.nil?
238
- if @api_key_prefix[param_name]
239
- "#{@api_key_prefix[param_name]} #{key}"
240
- else
241
- key
242
- end
243
- end
244
-
245
- # Gets Basic Auth token string
246
- def basic_auth_token
247
- 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
248
- end
249
-
250
- # Returns Auth Settings hash for api client.
251
- def auth_settings
252
- {
253
- 'PartnerClientId' =>
254
- {
255
- type: 'api_key',
256
- in: 'query',
257
- key: 'clientId',
258
- value: api_key_with_prefix('PartnerClientId')
259
- },
260
- 'PartnerSignature' =>
261
- {
262
- type: 'api_key',
263
- in: 'header',
264
- key: 'Signature',
265
- value: api_key_with_prefix('PartnerSignature')
266
- },
267
- 'PartnerTimestamp' =>
268
- {
269
- type: 'api_key',
270
- in: 'query',
271
- key: 'timestamp',
272
- value: api_key_with_prefix('PartnerTimestamp')
273
- },
274
- }
275
- end
276
-
277
- # Returns an array of Server setting
278
- def server_settings
279
- [
280
- {
281
- url: "https://api.snaptrade.com/api/v1",
282
- description: "SnapTrade Production API",
283
- }
284
- ]
285
- end
286
-
287
- def operation_server_settings
288
- {
289
- }
290
- end
291
-
292
- # Returns URL based on server settings
293
- #
294
- # @param index array index of the server settings
295
- # @param variables hash of variable and the corresponding value
296
- def server_url(index, variables = {}, servers = nil)
297
- servers = server_settings if servers == nil
298
-
299
- # check array index out of bound
300
- if (index < 0 || index >= servers.size)
301
- fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
302
- end
303
-
304
- server = servers[index]
305
- url = server[:url]
306
-
307
- return url unless server.key? :variables
308
-
309
- # go through variable and assign a value
310
- server[:variables].each do |name, variable|
311
- if variables.key?(name)
312
- if (!server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name]))
313
- url.gsub! "{" + name.to_s + "}", variables[name]
314
- else
315
- fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
316
- end
317
- else
318
- # use default value
319
- url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value]
320
- end
321
- end
322
-
323
- url
324
- end
325
-
326
- # Adds middleware to the stack
327
- def use(*middleware)
328
- set_faraday_middleware(:use, *middleware)
329
- end
330
-
331
- # Adds request middleware to the stack
332
- def request(*middleware)
333
- set_faraday_middleware(:request, *middleware)
334
- end
335
-
336
- # Adds response middleware to the stack
337
- def response(*middleware)
338
- set_faraday_middleware(:response, *middleware)
339
- end
340
-
341
- # Adds Faraday middleware setting information to the stack
342
- #
343
- # @example Use the `set_faraday_middleware` method to set middleware information
344
- # config.set_faraday_middleware(:request, :retry, max: 3, methods: [:get, :post], retry_statuses: [503])
345
- # config.set_faraday_middleware(:response, :logger, nil, { bodies: true, log_level: :debug })
346
- # config.set_faraday_middleware(:use, Faraday::HttpCache, store: Rails.cache, shared_cache: false)
347
- # config.set_faraday_middleware(:insert, 0, FaradayMiddleware::FollowRedirects, { standards_compliant: true, limit: 1 })
348
- # config.set_faraday_middleware(:swap, 0, Faraday::Response::Logger)
349
- # config.set_faraday_middleware(:delete, Faraday::Multipart::Middleware)
350
- #
351
- # @see https://github.com/lostisland/faraday/blob/v2.3.0/lib/faraday/rack_builder.rb#L92-L143
352
- def set_faraday_middleware(operation, key, *args, &block)
353
- unless [:request, :response, :use, :insert, :insert_before, :insert_after, :swap, :delete].include?(operation)
354
- fail ArgumentError, "Invalid faraday middleware operation #{operation}. Must be" \
355
- " :request, :response, :use, :insert, :insert_before, :insert_after, :swap or :delete."
356
- end
357
-
358
- @middlewares[operation] << [key, args, block]
359
- end
360
- ruby2_keywords(:set_faraday_middleware) if respond_to?(:ruby2_keywords, true)
361
-
362
- # Set up middleware on the connection
363
- def configure_middleware(connection)
364
- return if @middlewares.empty?
365
-
366
- [:request, :response, :use, :insert, :insert_before, :insert_after, :swap].each do |operation|
367
- next unless @middlewares.key?(operation)
368
-
369
- @middlewares[operation].each do |key, args, block|
370
- connection.builder.send(operation, key, *args, &block)
371
- end
372
- end
373
-
374
- if @middlewares.key?(:delete)
375
- @middlewares[:delete].each do |key, _args, _block|
376
- connection.builder.delete(key)
377
- end
378
- end
379
- end
380
- end
381
- end
154
+
155
+
156
+ attr_accessor :inject_format
157
+
158
+ attr_accessor :force_ending_format
159
+
160
+ def initialize
161
+ @scheme = 'https'
162
+ @host = 'api.snaptrade.com'
163
+ @base_path = '/api/v1'
164
+ @server_index = 0
165
+ @server_operation_index = {}
166
+ @server_variables = {}
167
+ @server_operation_variables = {}
168
+ @api_key = {}
169
+ @api_key_prefix = {}
170
+ @client_side_validation = true
171
+ @ssl_verify = true
172
+ @ssl_verify_mode = nil
173
+ @ssl_ca_file = nil
174
+ @ssl_client_cert = nil
175
+ @ssl_client_key = nil
176
+ @middlewares = Hash.new { |h, k| h[k] = [] }
177
+ @timeout = 60
178
+ # return data as binary instead of file
179
+ @return_binary_data = false
180
+ @params_encoder = nil
181
+ @debugging = false
182
+ @inject_format = false
183
+ @force_ending_format = false
184
+ @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
185
+
186
+ yield(self) if block_given?
187
+ end
188
+
189
+ # The default Configuration object.
190
+ def self.default
191
+ @@default ||= Configuration.new
192
+ end
193
+
194
+ def configure
195
+ yield(self) if block_given?
196
+ end
197
+
198
+ def scheme=(scheme)
199
+ # remove :// from scheme
200
+ @scheme = scheme.sub(/:\/\//, '')
201
+ end
202
+
203
+ def host=(host)
204
+ # remove http(s):// and anything after a slash
205
+ @host = host.sub(/https?:\/\//, '').split('/').first
206
+
207
+ # try to set @scheme and @base_path if possible
208
+ begin
209
+ uri = URI.parse(host)
210
+ @scheme = uri.scheme
211
+ @base_path = uri.path
212
+ rescue InvalidURIError
213
+ end
214
+
215
+ # unset server_index so host is used when getting request url (see ApiClient#build_request_url)
216
+ @server_index = nil
217
+ end
218
+
219
+ def base_path=(base_path)
220
+ # Add leading and trailing slashes to base_path
221
+ @base_path = "/#{base_path}".gsub(/\/+/, '/')
222
+ @base_path = '' if @base_path == '/'
223
+ end
224
+
225
+ # Returns base URL for specified operation based on server settings
226
+ def base_url(operation = nil)
227
+ index = server_operation_index.fetch(operation, server_index)
228
+ return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
229
+
230
+ server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
231
+ end
232
+
233
+ # Gets API key (with prefix if set).
234
+ # @param [String] param_name the parameter name of API key auth
235
+ def api_key_with_prefix(param_name, param_alias = nil)
236
+ key = @api_key[param_name]
237
+ key = @api_key.fetch(param_alias, key) unless param_alias.nil?
238
+ if @api_key_prefix[param_name]
239
+ "#{@api_key_prefix[param_name]} #{key}"
240
+ else
241
+ key
242
+ end
243
+ end
244
+
245
+ # Gets Basic Auth token string
246
+ def basic_auth_token
247
+ 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
248
+ end
249
+
250
+ # Returns Auth Settings hash for api client.
251
+ def auth_settings
252
+ {
253
+ 'PartnerClientId' =>
254
+ {
255
+ type: 'api_key',
256
+ in: 'query',
257
+ key: 'clientId',
258
+ value: api_key_with_prefix('PartnerClientId')
259
+ },
260
+ 'PartnerSignature' =>
261
+ {
262
+ type: 'api_key',
263
+ in: 'header',
264
+ key: 'Signature',
265
+ value: api_key_with_prefix('PartnerSignature')
266
+ },
267
+ 'PartnerTimestamp' =>
268
+ {
269
+ type: 'api_key',
270
+ in: 'query',
271
+ key: 'timestamp',
272
+ value: api_key_with_prefix('PartnerTimestamp')
273
+ },
274
+ }
275
+ end
276
+
277
+ # Returns an array of Server setting
278
+ def server_settings
279
+ [
280
+ {
281
+ url: "https://api.snaptrade.com/api/v1",
282
+ description: "SnapTrade Production API",
283
+ }
284
+ ]
285
+ end
286
+
287
+ def operation_server_settings
288
+ {
289
+ }
290
+ end
291
+
292
+ # Returns URL based on server settings
293
+ #
294
+ # @param index array index of the server settings
295
+ # @param variables hash of variable and the corresponding value
296
+ def server_url(index, variables = {}, servers = nil)
297
+ servers = server_settings if servers == nil
298
+
299
+ # check array index out of bound
300
+ if (index < 0 || index >= servers.size)
301
+ fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
302
+ end
303
+
304
+ server = servers[index]
305
+ url = server[:url]
306
+
307
+ return url unless server.key? :variables
308
+
309
+ # go through variable and assign a value
310
+ server[:variables].each do |name, variable|
311
+ if variables.key?(name)
312
+ if (!server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name]))
313
+ url.gsub! "{" + name.to_s + "}", variables[name]
314
+ else
315
+ fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
316
+ end
317
+ else
318
+ # use default value
319
+ url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value]
320
+ end
321
+ end
322
+
323
+ url
324
+ end
325
+
326
+ # Adds middleware to the stack
327
+ def use(*middleware)
328
+ set_faraday_middleware(:use, *middleware)
329
+ end
330
+
331
+ # Adds request middleware to the stack
332
+ def request(*middleware)
333
+ set_faraday_middleware(:request, *middleware)
334
+ end
335
+
336
+ # Adds response middleware to the stack
337
+ def response(*middleware)
338
+ set_faraday_middleware(:response, *middleware)
339
+ end
340
+
341
+ # Adds Faraday middleware setting information to the stack
342
+ #
343
+ # @example Use the `set_faraday_middleware` method to set middleware information
344
+ # config.set_faraday_middleware(:request, :retry, max: 3, methods: [:get, :post], retry_statuses: [503])
345
+ # config.set_faraday_middleware(:response, :logger, nil, { bodies: true, log_level: :debug })
346
+ # config.set_faraday_middleware(:use, Faraday::HttpCache, store: Rails.cache, shared_cache: false)
347
+ # config.set_faraday_middleware(:insert, 0, FaradayMiddleware::FollowRedirects, { standards_compliant: true, limit: 1 })
348
+ # config.set_faraday_middleware(:swap, 0, Faraday::Response::Logger)
349
+ # config.set_faraday_middleware(:delete, Faraday::Multipart::Middleware)
350
+ #
351
+ # @see https://github.com/lostisland/faraday/blob/v2.3.0/lib/faraday/rack_builder.rb#L92-L143
352
+ def set_faraday_middleware(operation, key, *args, &block)
353
+ unless [:request, :response, :use, :insert, :insert_before, :insert_after, :swap, :delete].include?(operation)
354
+ fail ArgumentError, "Invalid faraday middleware operation #{operation}. Must be" \
355
+ " :request, :response, :use, :insert, :insert_before, :insert_after, :swap or :delete."
356
+ end
357
+
358
+ @middlewares[operation] << [key, args, block]
359
+ end
360
+ ruby2_keywords(:set_faraday_middleware) if respond_to?(:ruby2_keywords, true)
361
+
362
+ # Set up middleware on the connection
363
+ def configure_middleware(connection)
364
+ return if @middlewares.empty?
365
+
366
+ [:request, :response, :use, :insert, :insert_before, :insert_after, :swap].each do |operation|
367
+ next unless @middlewares.key?(operation)
368
+
369
+ @middlewares[operation].each do |key, args, block|
370
+ connection.builder.send(operation, key, *args, &block)
371
+ end
372
+ end
373
+
374
+ if @middlewares.key?(:delete)
375
+ @middlewares[:delete].each do |key, _args, _block|
376
+ connection.builder.delete(key)
377
+ end
378
+ end
379
+ end
380
+ end
381
+ end