snaptrade 3.0.14 → 3.0.16

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 (509) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +62 -5
  3. data/lib/snaptrade/api/account_information_api.rb +1 -1
  4. data/lib/snaptrade/api/api_status_api.rb +1 -1
  5. data/lib/snaptrade/api/authentication_api.rb +1 -1
  6. data/lib/snaptrade/api/connections_api.rb +1 -1
  7. data/lib/snaptrade/api/experimental_endpoints_api.rb +1 -1
  8. data/lib/snaptrade/api/reference_data_api.rb +1 -1
  9. data/lib/snaptrade/api/trading_api.rb +1 -1
  10. data/lib/snaptrade/api_client.rb +1 -1
  11. data/lib/snaptrade/api_client_custom.rb +1 -1
  12. data/lib/snaptrade/api_error.rb +1 -1
  13. data/lib/snaptrade/configuration.rb +1 -1
  14. data/lib/snaptrade/models/account.rb +1 -1
  15. data/lib/snaptrade/models/account_balance.rb +1 -1
  16. data/lib/snaptrade/models/account_balance_total.rb +1 -1
  17. data/lib/snaptrade/models/account_category.rb +1 -1
  18. data/lib/snaptrade/models/account_holdings.rb +1 -1
  19. data/lib/snaptrade/models/account_holdings_account.rb +1 -1
  20. data/lib/snaptrade/models/account_information_get_user_account_order_detail_request.rb +1 -1
  21. data/lib/snaptrade/models/account_order_record.rb +1 -1
  22. data/lib/snaptrade/models/account_order_record_child_brokerage_order_ids.rb +1 -1
  23. data/lib/snaptrade/models/account_order_record_leg.rb +1 -1
  24. data/lib/snaptrade/models/account_order_record_leg_instrument.rb +1 -1
  25. data/lib/snaptrade/models/account_order_record_option_symbol.rb +1 -1
  26. data/lib/snaptrade/models/account_order_record_quote_currency.rb +1 -1
  27. data/lib/snaptrade/models/account_order_record_quote_universal_symbol.rb +1 -1
  28. data/lib/snaptrade/models/account_order_record_status.rb +1 -1
  29. data/lib/snaptrade/models/account_order_record_status_v2.rb +1 -1
  30. data/lib/snaptrade/models/account_order_record_trailing_stop.rb +1 -1
  31. data/lib/snaptrade/models/account_order_record_universal_symbol.rb +1 -1
  32. data/lib/snaptrade/models/account_order_record_v2.rb +1 -1
  33. data/lib/snaptrade/models/account_order_record_v2_order_role.rb +1 -1
  34. data/lib/snaptrade/models/account_orders_v2_response.rb +1 -1
  35. data/lib/snaptrade/models/account_position.rb +1 -1
  36. data/lib/snaptrade/models/account_simple.rb +1 -1
  37. data/lib/snaptrade/models/account_status.rb +1 -1
  38. data/lib/snaptrade/models/account_sync_status.rb +1 -1
  39. data/lib/snaptrade/models/account_universal_activity.rb +1 -1
  40. data/lib/snaptrade/models/account_universal_activity_currency.rb +1 -1
  41. data/lib/snaptrade/models/account_universal_activity_currency_universal_symbol.rb +1 -1
  42. data/lib/snaptrade/models/account_universal_activity_option_symbol.rb +1 -1
  43. data/lib/snaptrade/models/account_universal_activity_symbol.rb +1 -1
  44. data/lib/snaptrade/models/account_value_history_item.rb +1 -1
  45. data/lib/snaptrade/models/account_value_history_response.rb +1 -1
  46. data/lib/snaptrade/models/action_strict.rb +1 -1
  47. data/lib/snaptrade/models/action_strict_with_options.rb +1 -1
  48. data/lib/snaptrade/models/adr_instrument.rb +1 -1
  49. data/lib/snaptrade/models/adr_instrument_kind.rb +1 -1
  50. data/lib/snaptrade/models/all_account_positions_response.rb +1 -1
  51. data/lib/snaptrade/models/all_account_positions_response_data_freshness.rb +1 -1
  52. data/lib/snaptrade/models/auth_type.rb +1 -1
  53. data/lib/snaptrade/models/authentication_login_snap_trade_user200_response.rb +1 -1
  54. data/lib/snaptrade/models/balance.rb +1 -1
  55. data/lib/snaptrade/models/balance_currency.rb +1 -1
  56. data/lib/snaptrade/models/brokerage.rb +1 -1
  57. data/lib/snaptrade/models/brokerage_authorization.rb +1 -1
  58. data/lib/snaptrade/models/brokerage_authorization_data_freshness_mode.rb +4 -2
  59. data/lib/snaptrade/models/brokerage_authorization_disabled_confirmation.rb +1 -1
  60. data/lib/snaptrade/models/brokerage_authorization_refresh_confirmation.rb +1 -1
  61. data/lib/snaptrade/models/brokerage_authorization_transactions_sync_confirmation.rb +1 -1
  62. data/lib/snaptrade/models/brokerage_authorization_type_read_only.rb +1 -1
  63. data/lib/snaptrade/models/brokerage_authorization_type_read_only_brokerage.rb +1 -1
  64. data/lib/snaptrade/models/brokerage_authorization_type_read_only_type.rb +1 -1
  65. data/lib/snaptrade/models/brokerage_instrument.rb +1 -1
  66. data/lib/snaptrade/models/brokerage_instruments_response.rb +1 -1
  67. data/lib/snaptrade/models/brokerage_type.rb +1 -1
  68. data/lib/snaptrade/models/cancel_order_response.rb +1 -1
  69. data/lib/snaptrade/models/cash_change_direction.rb +1 -1
  70. data/lib/snaptrade/models/cef_instrument.rb +1 -1
  71. data/lib/snaptrade/models/cef_instrument_kind.rb +1 -1
  72. data/lib/snaptrade/models/cfd_instrument.rb +1 -1
  73. data/lib/snaptrade/models/cfd_instrument_kind.rb +1 -1
  74. data/lib/snaptrade/models/child_brokerage_order_ids.rb +1 -1
  75. data/lib/snaptrade/models/complex_order_leg.rb +1 -1
  76. data/lib/snaptrade/models/complex_order_leg_order_role.rb +1 -1
  77. data/lib/snaptrade/models/complex_order_response.rb +1 -1
  78. data/lib/snaptrade/models/complex_order_response_type.rb +1 -1
  79. data/lib/snaptrade/models/connection_account.rb +1 -1
  80. data/lib/snaptrade/models/connection_account_sync_status.rb +1 -1
  81. data/lib/snaptrade/models/connection_portal_version.rb +1 -1
  82. data/lib/snaptrade/models/connection_type.rb +1 -1
  83. data/lib/snaptrade/models/crypto_instrument.rb +1 -1
  84. data/lib/snaptrade/models/crypto_instrument_kind.rb +1 -1
  85. data/lib/snaptrade/models/crypto_order_form.rb +1 -1
  86. data/lib/snaptrade/models/crypto_order_form_time_in_force.rb +1 -1
  87. data/lib/snaptrade/models/crypto_order_form_type.rb +1 -1
  88. data/lib/snaptrade/models/crypto_order_preview.rb +1 -1
  89. data/lib/snaptrade/models/crypto_order_preview_estimated_fee.rb +1 -1
  90. data/lib/snaptrade/models/crypto_trading_instrument.rb +1 -1
  91. data/lib/snaptrade/models/crypto_trading_instrument_type.rb +1 -1
  92. data/lib/snaptrade/models/cryptocurrency_pair.rb +1 -1
  93. data/lib/snaptrade/models/cryptocurrency_pair_quote.rb +1 -1
  94. data/lib/snaptrade/models/currency.rb +1 -1
  95. data/lib/snaptrade/models/delete_connection_confirmation.rb +1 -1
  96. data/lib/snaptrade/models/delete_user_response.rb +1 -1
  97. data/lib/snaptrade/models/deposit_account.rb +1 -1
  98. data/lib/snaptrade/models/deposit_account_kind.rb +1 -1
  99. data/lib/snaptrade/models/deposit_account_net_value.rb +1 -1
  100. data/lib/snaptrade/models/deposit_account_sync_status.rb +1 -1
  101. data/lib/snaptrade/models/dividend_at_date.rb +1 -1
  102. data/lib/snaptrade/models/encrypted_response.rb +1 -1
  103. data/lib/snaptrade/models/encrypted_response_encrypted_message_data.rb +1 -1
  104. data/lib/snaptrade/models/etf_instrument.rb +1 -1
  105. data/lib/snaptrade/models/etf_instrument_kind.rb +1 -1
  106. data/lib/snaptrade/models/exchange.rb +1 -1
  107. data/lib/snaptrade/models/exchange_rate_pairs.rb +1 -1
  108. data/lib/snaptrade/models/figi_instrument.rb +1 -1
  109. data/lib/snaptrade/models/future_instrument.rb +1 -1
  110. data/lib/snaptrade/models/future_instrument_kind.rb +1 -1
  111. data/lib/snaptrade/models/holdings_status.rb +1 -1
  112. data/lib/snaptrade/models/institution.rb +1 -1
  113. data/lib/snaptrade/models/instrument.rb +1 -1
  114. data/lib/snaptrade/models/investment_account.rb +1 -1
  115. data/lib/snaptrade/models/investment_account_net_value.rb +1 -1
  116. data/lib/snaptrade/models/kind.rb +1 -1
  117. data/lib/snaptrade/models/line_of_credit_account.rb +27 -6
  118. data/lib/snaptrade/models/line_of_credit_account_available_credit.rb +228 -0
  119. data/lib/snaptrade/models/line_of_credit_account_kind.rb +1 -1
  120. data/lib/snaptrade/models/line_of_credit_account_minimum_payment_amount.rb +1 -1
  121. data/lib/snaptrade/models/line_of_credit_account_net_value.rb +1 -1
  122. data/lib/snaptrade/models/line_of_credit_account_sync_status.rb +1 -1
  123. data/lib/snaptrade/models/login_redirect_uri.rb +1 -1
  124. data/lib/snaptrade/models/manual_trade.rb +1 -1
  125. data/lib/snaptrade/models/manual_trade_and_impact.rb +1 -1
  126. data/lib/snaptrade/models/manual_trade_balance.rb +1 -1
  127. data/lib/snaptrade/models/manual_trade_form.rb +1 -1
  128. data/lib/snaptrade/models/manual_trade_form_bracket.rb +1 -1
  129. data/lib/snaptrade/models/manual_trade_form_complex.rb +1 -1
  130. data/lib/snaptrade/models/manual_trade_form_complex_type.rb +1 -1
  131. data/lib/snaptrade/models/manual_trade_form_notional_value.rb +1 -1
  132. data/lib/snaptrade/models/manual_trade_form_with_options.rb +1 -1
  133. data/lib/snaptrade/models/manual_trade_impact.rb +1 -1
  134. data/lib/snaptrade/models/manual_trade_place_time_in_force_strict.rb +1 -1
  135. data/lib/snaptrade/models/manual_trade_replace_form.rb +1 -1
  136. data/lib/snaptrade/models/manual_trade_symbol.rb +1 -1
  137. data/lib/snaptrade/models/mleg_action_strict.rb +1 -1
  138. data/lib/snaptrade/models/mleg_instrument_type.rb +1 -1
  139. data/lib/snaptrade/models/mleg_leg.rb +1 -1
  140. data/lib/snaptrade/models/mleg_order_response.rb +1 -1
  141. data/lib/snaptrade/models/mleg_order_type_strict.rb +1 -1
  142. data/lib/snaptrade/models/mleg_price_effect_strict.rb +1 -1
  143. data/lib/snaptrade/models/mleg_trade_form.rb +1 -1
  144. data/lib/snaptrade/models/mleg_trading_instrument.rb +1 -1
  145. data/lib/snaptrade/models/model400_failed_request_response.rb +1 -1
  146. data/lib/snaptrade/models/model401_failed_request_response.rb +1 -1
  147. data/lib/snaptrade/models/model402_brokerage_auth_already_disabled_exception.rb +1 -1
  148. data/lib/snaptrade/models/model402_brokerage_auth_disabled_response.rb +1 -1
  149. data/lib/snaptrade/models/model403_failed_request_response.rb +1 -1
  150. data/lib/snaptrade/models/model403_feature_not_enabled_response.rb +1 -1
  151. data/lib/snaptrade/models/model404_failed_request_response.rb +1 -1
  152. data/lib/snaptrade/models/model425_failed_request_response.rb +1 -1
  153. data/lib/snaptrade/models/model429_too_many_requests_response.rb +1 -1
  154. data/lib/snaptrade/models/model500_unexpected_exception_response.rb +1 -1
  155. data/lib/snaptrade/models/model501_not_implemented_response.rb +1 -1
  156. data/lib/snaptrade/models/model503_brokerage_request_response.rb +1 -1
  157. data/lib/snaptrade/models/monthly_dividends.rb +1 -1
  158. data/lib/snaptrade/models/mutual_fund_instrument.rb +1 -1
  159. data/lib/snaptrade/models/mutual_fund_instrument_kind.rb +1 -1
  160. data/lib/snaptrade/models/net_contributions.rb +1 -1
  161. data/lib/snaptrade/models/net_dividend.rb +1 -1
  162. data/lib/snaptrade/models/notional_value.rb +1 -1
  163. data/lib/snaptrade/models/o_auth_webhook_base.rb +1 -1
  164. data/lib/snaptrade/models/option_brokerage_symbol.rb +1 -1
  165. data/lib/snaptrade/models/option_chain_inner.rb +1 -1
  166. data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner.rb +1 -1
  167. data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner.rb +1 -1
  168. data/lib/snaptrade/models/option_impact.rb +1 -1
  169. data/lib/snaptrade/models/option_instrument.rb +1 -1
  170. data/lib/snaptrade/models/option_instrument_kind.rb +1 -1
  171. data/lib/snaptrade/models/option_leg.rb +1 -1
  172. data/lib/snaptrade/models/option_leg_action.rb +1 -1
  173. data/lib/snaptrade/models/option_quote.rb +1 -1
  174. data/lib/snaptrade/models/option_quote_greeks.rb +1 -1
  175. data/lib/snaptrade/models/option_strategy.rb +1 -1
  176. data/lib/snaptrade/models/option_strategy_legs_inner.rb +1 -1
  177. data/lib/snaptrade/models/option_type.rb +1 -1
  178. data/lib/snaptrade/models/options_position.rb +1 -1
  179. data/lib/snaptrade/models/options_position_currency.rb +1 -1
  180. data/lib/snaptrade/models/options_symbol.rb +1 -1
  181. data/lib/snaptrade/models/options_symbol_option_type.rb +1 -1
  182. data/lib/snaptrade/models/order_role.rb +1 -1
  183. data/lib/snaptrade/models/order_type_strict.rb +1 -1
  184. data/lib/snaptrade/models/order_updated_response.rb +1 -1
  185. data/lib/snaptrade/models/order_updated_response_order.rb +1 -1
  186. data/lib/snaptrade/models/other_instrument.rb +1 -1
  187. data/lib/snaptrade/models/other_instrument_kind.rb +1 -1
  188. data/lib/snaptrade/models/paginated_universal_activity.rb +1 -1
  189. data/lib/snaptrade/models/pagination_details.rb +1 -1
  190. data/lib/snaptrade/models/partner_data.rb +1 -1
  191. data/lib/snaptrade/models/past_value.rb +1 -1
  192. data/lib/snaptrade/models/performance_custom.rb +1 -1
  193. data/lib/snaptrade/models/position.rb +1 -1
  194. data/lib/snaptrade/models/position_currency.rb +1 -1
  195. data/lib/snaptrade/models/position_symbol.rb +1 -1
  196. data/lib/snaptrade/models/price_effect.rb +1 -1
  197. data/lib/snaptrade/models/rate_of_return_object.rb +1 -1
  198. data/lib/snaptrade/models/rate_of_return_response.rb +1 -1
  199. data/lib/snaptrade/models/recent_orders_response.rb +1 -1
  200. data/lib/snaptrade/models/schema_version.rb +1 -1
  201. data/lib/snaptrade/models/security_type.rb +1 -1
  202. data/lib/snaptrade/models/session_event.rb +1 -1
  203. data/lib/snaptrade/models/session_event_type.rb +1 -1
  204. data/lib/snaptrade/models/simple_order_form.rb +1 -1
  205. data/lib/snaptrade/models/simple_order_form_time_in_force.rb +1 -1
  206. data/lib/snaptrade/models/simple_order_form_type.rb +1 -1
  207. data/lib/snaptrade/models/snap_trade_holdings_account.rb +1 -1
  208. data/lib/snaptrade/models/snap_trade_holdings_total_value.rb +1 -1
  209. data/lib/snaptrade/models/snap_trade_login_user_request_body.rb +1 -1
  210. data/lib/snaptrade/models/snap_trade_register_user_request_body.rb +1 -1
  211. data/lib/snaptrade/models/snaptrade.rb +1 -1
  212. data/lib/snaptrade/models/status.rb +1 -1
  213. data/lib/snaptrade/models/stock_instrument.rb +1 -1
  214. data/lib/snaptrade/models/stock_instrument_figi_instrument.rb +1 -1
  215. data/lib/snaptrade/models/stock_instrument_kind.rb +1 -1
  216. data/lib/snaptrade/models/stop_loss.rb +1 -1
  217. data/lib/snaptrade/models/strategy_order_record.rb +1 -1
  218. data/lib/snaptrade/models/strategy_order_record_status.rb +1 -1
  219. data/lib/snaptrade/models/strategy_quotes.rb +1 -1
  220. data/lib/snaptrade/models/strategy_quotes_greek.rb +1 -1
  221. data/lib/snaptrade/models/strategy_type.rb +1 -1
  222. data/lib/snaptrade/models/sub_period_return_rate.rb +1 -1
  223. data/lib/snaptrade/models/symbol.rb +1 -1
  224. data/lib/snaptrade/models/symbol_currency.rb +1 -1
  225. data/lib/snaptrade/models/symbol_exchange.rb +1 -1
  226. data/lib/snaptrade/models/symbol_query.rb +1 -1
  227. data/lib/snaptrade/models/symbols_quotes_inner.rb +1 -1
  228. data/lib/snaptrade/models/take_profit.rb +1 -1
  229. data/lib/snaptrade/models/tax_lot.rb +1 -1
  230. data/lib/snaptrade/models/time_in_force_strict.rb +1 -1
  231. data/lib/snaptrade/models/timeframe.rb +1 -1
  232. data/lib/snaptrade/models/trade_detection_add_subscription_request.rb +1 -1
  233. data/lib/snaptrade/models/trade_detection_cancel_subscription_request.rb +1 -1
  234. data/lib/snaptrade/models/trade_detection_cancel_subscription_response.rb +1 -1
  235. data/lib/snaptrade/models/trade_detection_subscription.rb +1 -1
  236. data/lib/snaptrade/models/trading_instrument.rb +1 -1
  237. data/lib/snaptrade/models/trading_instrument_type.rb +1 -1
  238. data/lib/snaptrade/models/trading_search_cryptocurrency_pair_instruments200_response.rb +1 -1
  239. data/lib/snaptrade/models/trading_session.rb +1 -1
  240. data/lib/snaptrade/models/trailing_stop.rb +1 -1
  241. data/lib/snaptrade/models/transactions_status.rb +1 -1
  242. data/lib/snaptrade/models/type.rb +1 -1
  243. data/lib/snaptrade/models/underlying_cfd_instrument.rb +1 -1
  244. data/lib/snaptrade/models/underlying_option_instrument.rb +1 -1
  245. data/lib/snaptrade/models/underlying_symbol.rb +1 -1
  246. data/lib/snaptrade/models/underlying_symbol_exchange.rb +1 -1
  247. data/lib/snaptrade/models/underlying_symbol_type.rb +1 -1
  248. data/lib/snaptrade/models/universal_activity.rb +1 -1
  249. data/lib/snaptrade/models/universal_symbol.rb +1 -1
  250. data/lib/snaptrade/models/us_exchange.rb +1 -1
  251. data/lib/snaptrade/models/user_i_dand_secret.rb +1 -1
  252. data/lib/snaptrade/models/validated_trade_body.rb +1 -1
  253. data/lib/snaptrade/version.rb +2 -2
  254. data/lib/snaptrade.rb +2 -1
  255. data/snaptrade.gemspec +2 -2
  256. data/spec/api/account_information_api_spec.rb +1 -1
  257. data/spec/api/api_status_api_spec.rb +1 -1
  258. data/spec/api/authentication_api_spec.rb +1 -1
  259. data/spec/api/connections_api_spec.rb +1 -1
  260. data/spec/api/experimental_endpoints_api_spec.rb +1 -1
  261. data/spec/api/reference_data_api_spec.rb +1 -1
  262. data/spec/api/trading_api_spec.rb +1 -1
  263. data/spec/api_client_spec.rb +1 -1
  264. data/spec/configuration_spec.rb +1 -1
  265. data/spec/models/account_balance_spec.rb +1 -1
  266. data/spec/models/account_balance_total_spec.rb +1 -1
  267. data/spec/models/account_category_spec.rb +1 -1
  268. data/spec/models/account_holdings_account_spec.rb +1 -1
  269. data/spec/models/account_holdings_spec.rb +1 -1
  270. data/spec/models/account_information_get_user_account_order_detail_request_spec.rb +1 -1
  271. data/spec/models/account_order_record_child_brokerage_order_ids_spec.rb +1 -1
  272. data/spec/models/account_order_record_leg_instrument_spec.rb +1 -1
  273. data/spec/models/account_order_record_leg_spec.rb +1 -1
  274. data/spec/models/account_order_record_option_symbol_spec.rb +1 -1
  275. data/spec/models/account_order_record_quote_currency_spec.rb +1 -1
  276. data/spec/models/account_order_record_quote_universal_symbol_spec.rb +1 -1
  277. data/spec/models/account_order_record_spec.rb +1 -1
  278. data/spec/models/account_order_record_status_spec.rb +1 -1
  279. data/spec/models/account_order_record_status_v2_spec.rb +1 -1
  280. data/spec/models/account_order_record_trailing_stop_spec.rb +1 -1
  281. data/spec/models/account_order_record_universal_symbol_spec.rb +1 -1
  282. data/spec/models/account_order_record_v2_order_role_spec.rb +1 -1
  283. data/spec/models/account_order_record_v2_spec.rb +1 -1
  284. data/spec/models/account_orders_v2_response_spec.rb +1 -1
  285. data/spec/models/account_position_spec.rb +1 -1
  286. data/spec/models/account_simple_spec.rb +1 -1
  287. data/spec/models/account_spec.rb +1 -1
  288. data/spec/models/account_status_spec.rb +1 -1
  289. data/spec/models/account_sync_status_spec.rb +1 -1
  290. data/spec/models/account_universal_activity_currency_spec.rb +1 -1
  291. data/spec/models/account_universal_activity_currency_universal_symbol_spec.rb +1 -1
  292. data/spec/models/account_universal_activity_option_symbol_spec.rb +1 -1
  293. data/spec/models/account_universal_activity_spec.rb +1 -1
  294. data/spec/models/account_universal_activity_symbol_spec.rb +1 -1
  295. data/spec/models/account_value_history_item_spec.rb +1 -1
  296. data/spec/models/account_value_history_response_spec.rb +1 -1
  297. data/spec/models/action_strict_spec.rb +1 -1
  298. data/spec/models/action_strict_with_options_spec.rb +1 -1
  299. data/spec/models/adr_instrument_kind_spec.rb +1 -1
  300. data/spec/models/adr_instrument_spec.rb +1 -1
  301. data/spec/models/all_account_positions_response_data_freshness_spec.rb +1 -1
  302. data/spec/models/all_account_positions_response_spec.rb +1 -1
  303. data/spec/models/auth_type_spec.rb +1 -1
  304. data/spec/models/authentication_login_snap_trade_user200_response_spec.rb +1 -1
  305. data/spec/models/balance_currency_spec.rb +1 -1
  306. data/spec/models/balance_spec.rb +1 -1
  307. data/spec/models/brokerage_authorization_data_freshness_mode_spec.rb +1 -1
  308. data/spec/models/brokerage_authorization_disabled_confirmation_spec.rb +1 -1
  309. data/spec/models/brokerage_authorization_refresh_confirmation_spec.rb +1 -1
  310. data/spec/models/brokerage_authorization_spec.rb +1 -1
  311. data/spec/models/brokerage_authorization_transactions_sync_confirmation_spec.rb +1 -1
  312. data/spec/models/brokerage_authorization_type_read_only_brokerage_spec.rb +1 -1
  313. data/spec/models/brokerage_authorization_type_read_only_spec.rb +1 -1
  314. data/spec/models/brokerage_authorization_type_read_only_type_spec.rb +1 -1
  315. data/spec/models/brokerage_instrument_spec.rb +1 -1
  316. data/spec/models/brokerage_instruments_response_spec.rb +1 -1
  317. data/spec/models/brokerage_spec.rb +1 -1
  318. data/spec/models/brokerage_type_spec.rb +1 -1
  319. data/spec/models/cancel_order_response_spec.rb +1 -1
  320. data/spec/models/cash_change_direction_spec.rb +1 -1
  321. data/spec/models/cef_instrument_kind_spec.rb +1 -1
  322. data/spec/models/cef_instrument_spec.rb +1 -1
  323. data/spec/models/cfd_instrument_kind_spec.rb +1 -1
  324. data/spec/models/cfd_instrument_spec.rb +1 -1
  325. data/spec/models/child_brokerage_order_ids_spec.rb +1 -1
  326. data/spec/models/complex_order_leg_order_role_spec.rb +1 -1
  327. data/spec/models/complex_order_leg_spec.rb +1 -1
  328. data/spec/models/complex_order_response_spec.rb +1 -1
  329. data/spec/models/complex_order_response_type_spec.rb +1 -1
  330. data/spec/models/connection_account_spec.rb +2 -2
  331. data/spec/models/connection_account_sync_status_spec.rb +1 -1
  332. data/spec/models/connection_portal_version_spec.rb +1 -1
  333. data/spec/models/connection_type_spec.rb +1 -1
  334. data/spec/models/crypto_instrument_kind_spec.rb +1 -1
  335. data/spec/models/crypto_instrument_spec.rb +1 -1
  336. data/spec/models/crypto_order_form_spec.rb +1 -1
  337. data/spec/models/crypto_order_form_time_in_force_spec.rb +1 -1
  338. data/spec/models/crypto_order_form_type_spec.rb +1 -1
  339. data/spec/models/crypto_order_preview_estimated_fee_spec.rb +1 -1
  340. data/spec/models/crypto_order_preview_spec.rb +1 -1
  341. data/spec/models/crypto_trading_instrument_spec.rb +1 -1
  342. data/spec/models/crypto_trading_instrument_type_spec.rb +1 -1
  343. data/spec/models/cryptocurrency_pair_quote_spec.rb +1 -1
  344. data/spec/models/cryptocurrency_pair_spec.rb +1 -1
  345. data/spec/models/currency_spec.rb +1 -1
  346. data/spec/models/delete_connection_confirmation_spec.rb +1 -1
  347. data/spec/models/delete_user_response_spec.rb +1 -1
  348. data/spec/models/deposit_account_kind_spec.rb +1 -1
  349. data/spec/models/deposit_account_net_value_spec.rb +1 -1
  350. data/spec/models/deposit_account_spec.rb +1 -1
  351. data/spec/models/deposit_account_sync_status_spec.rb +1 -1
  352. data/spec/models/dividend_at_date_spec.rb +1 -1
  353. data/spec/models/encrypted_response_encrypted_message_data_spec.rb +1 -1
  354. data/spec/models/encrypted_response_spec.rb +1 -1
  355. data/spec/models/etf_instrument_kind_spec.rb +1 -1
  356. data/spec/models/etf_instrument_spec.rb +1 -1
  357. data/spec/models/exchange_rate_pairs_spec.rb +1 -1
  358. data/spec/models/exchange_spec.rb +1 -1
  359. data/spec/models/figi_instrument_spec.rb +1 -1
  360. data/spec/models/future_instrument_kind_spec.rb +1 -1
  361. data/spec/models/future_instrument_spec.rb +1 -1
  362. data/spec/models/holdings_status_spec.rb +1 -1
  363. data/spec/models/institution_spec.rb +1 -1
  364. data/spec/models/instrument_spec.rb +1 -1
  365. data/spec/models/investment_account_net_value_spec.rb +1 -1
  366. data/spec/models/investment_account_spec.rb +1 -1
  367. data/spec/models/kind_spec.rb +1 -1
  368. data/spec/models/line_of_credit_account_available_credit_spec.rb +35 -0
  369. data/spec/models/line_of_credit_account_kind_spec.rb +1 -1
  370. data/spec/models/line_of_credit_account_minimum_payment_amount_spec.rb +1 -1
  371. data/spec/models/line_of_credit_account_net_value_spec.rb +1 -1
  372. data/spec/models/line_of_credit_account_spec.rb +13 -1
  373. data/spec/models/line_of_credit_account_sync_status_spec.rb +1 -1
  374. data/spec/models/login_redirect_uri_spec.rb +1 -1
  375. data/spec/models/manual_trade_and_impact_spec.rb +1 -1
  376. data/spec/models/manual_trade_balance_spec.rb +1 -1
  377. data/spec/models/manual_trade_form_bracket_spec.rb +1 -1
  378. data/spec/models/manual_trade_form_complex_spec.rb +1 -1
  379. data/spec/models/manual_trade_form_complex_type_spec.rb +1 -1
  380. data/spec/models/manual_trade_form_notional_value_spec.rb +1 -1
  381. data/spec/models/manual_trade_form_spec.rb +1 -1
  382. data/spec/models/manual_trade_form_with_options_spec.rb +1 -1
  383. data/spec/models/manual_trade_impact_spec.rb +1 -1
  384. data/spec/models/manual_trade_place_time_in_force_strict_spec.rb +1 -1
  385. data/spec/models/manual_trade_replace_form_spec.rb +1 -1
  386. data/spec/models/manual_trade_spec.rb +1 -1
  387. data/spec/models/manual_trade_symbol_spec.rb +1 -1
  388. data/spec/models/mleg_action_strict_spec.rb +1 -1
  389. data/spec/models/mleg_instrument_type_spec.rb +1 -1
  390. data/spec/models/mleg_leg_spec.rb +1 -1
  391. data/spec/models/mleg_order_response_spec.rb +1 -1
  392. data/spec/models/mleg_order_type_strict_spec.rb +1 -1
  393. data/spec/models/mleg_price_effect_strict_spec.rb +1 -1
  394. data/spec/models/mleg_trade_form_spec.rb +1 -1
  395. data/spec/models/mleg_trading_instrument_spec.rb +1 -1
  396. data/spec/models/model400_failed_request_response_spec.rb +1 -1
  397. data/spec/models/model401_failed_request_response_spec.rb +1 -1
  398. data/spec/models/model402_brokerage_auth_already_disabled_exception_spec.rb +1 -1
  399. data/spec/models/model402_brokerage_auth_disabled_response_spec.rb +1 -1
  400. data/spec/models/model403_failed_request_response_spec.rb +1 -1
  401. data/spec/models/model403_feature_not_enabled_response_spec.rb +1 -1
  402. data/spec/models/model404_failed_request_response_spec.rb +1 -1
  403. data/spec/models/model425_failed_request_response_spec.rb +1 -1
  404. data/spec/models/model429_too_many_requests_response_spec.rb +1 -1
  405. data/spec/models/model500_unexpected_exception_response_spec.rb +1 -1
  406. data/spec/models/model501_not_implemented_response_spec.rb +1 -1
  407. data/spec/models/model503_brokerage_request_response_spec.rb +1 -1
  408. data/spec/models/monthly_dividends_spec.rb +1 -1
  409. data/spec/models/mutual_fund_instrument_kind_spec.rb +1 -1
  410. data/spec/models/mutual_fund_instrument_spec.rb +1 -1
  411. data/spec/models/net_contributions_spec.rb +1 -1
  412. data/spec/models/net_dividend_spec.rb +1 -1
  413. data/spec/models/notional_value_spec.rb +1 -1
  414. data/spec/models/o_auth_webhook_base_spec.rb +1 -1
  415. data/spec/models/option_brokerage_symbol_spec.rb +1 -1
  416. data/spec/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner_spec.rb +1 -1
  417. data/spec/models/option_chain_inner_chain_per_root_inner_spec.rb +1 -1
  418. data/spec/models/option_chain_inner_spec.rb +1 -1
  419. data/spec/models/option_impact_spec.rb +1 -1
  420. data/spec/models/option_instrument_kind_spec.rb +1 -1
  421. data/spec/models/option_instrument_spec.rb +1 -1
  422. data/spec/models/option_leg_action_spec.rb +1 -1
  423. data/spec/models/option_leg_spec.rb +1 -1
  424. data/spec/models/option_quote_greeks_spec.rb +1 -1
  425. data/spec/models/option_quote_spec.rb +1 -1
  426. data/spec/models/option_strategy_legs_inner_spec.rb +1 -1
  427. data/spec/models/option_strategy_spec.rb +1 -1
  428. data/spec/models/option_type_spec.rb +1 -1
  429. data/spec/models/options_position_currency_spec.rb +1 -1
  430. data/spec/models/options_position_spec.rb +1 -1
  431. data/spec/models/options_symbol_option_type_spec.rb +1 -1
  432. data/spec/models/options_symbol_spec.rb +1 -1
  433. data/spec/models/order_role_spec.rb +1 -1
  434. data/spec/models/order_type_strict_spec.rb +1 -1
  435. data/spec/models/order_updated_response_order_spec.rb +1 -1
  436. data/spec/models/order_updated_response_spec.rb +1 -1
  437. data/spec/models/other_instrument_kind_spec.rb +1 -1
  438. data/spec/models/other_instrument_spec.rb +1 -1
  439. data/spec/models/paginated_universal_activity_spec.rb +1 -1
  440. data/spec/models/pagination_details_spec.rb +1 -1
  441. data/spec/models/partner_data_spec.rb +1 -1
  442. data/spec/models/past_value_spec.rb +1 -1
  443. data/spec/models/performance_custom_spec.rb +1 -1
  444. data/spec/models/position_currency_spec.rb +1 -1
  445. data/spec/models/position_spec.rb +1 -1
  446. data/spec/models/position_symbol_spec.rb +1 -1
  447. data/spec/models/price_effect_spec.rb +1 -1
  448. data/spec/models/rate_of_return_object_spec.rb +1 -1
  449. data/spec/models/rate_of_return_response_spec.rb +1 -1
  450. data/spec/models/recent_orders_response_spec.rb +1 -1
  451. data/spec/models/schema_version_spec.rb +1 -1
  452. data/spec/models/security_type_spec.rb +1 -1
  453. data/spec/models/session_event_spec.rb +1 -1
  454. data/spec/models/session_event_type_spec.rb +1 -1
  455. data/spec/models/simple_order_form_spec.rb +1 -1
  456. data/spec/models/simple_order_form_time_in_force_spec.rb +1 -1
  457. data/spec/models/simple_order_form_type_spec.rb +1 -1
  458. data/spec/models/snap_trade_holdings_account_spec.rb +1 -1
  459. data/spec/models/snap_trade_holdings_total_value_spec.rb +1 -1
  460. data/spec/models/snap_trade_login_user_request_body_spec.rb +1 -1
  461. data/spec/models/snap_trade_register_user_request_body_spec.rb +1 -1
  462. data/spec/models/snaptrade_spec.rb +1 -1
  463. data/spec/models/status_spec.rb +1 -1
  464. data/spec/models/stock_instrument_figi_instrument_spec.rb +1 -1
  465. data/spec/models/stock_instrument_kind_spec.rb +1 -1
  466. data/spec/models/stock_instrument_spec.rb +1 -1
  467. data/spec/models/stop_loss_spec.rb +1 -1
  468. data/spec/models/strategy_order_record_spec.rb +1 -1
  469. data/spec/models/strategy_order_record_status_spec.rb +1 -1
  470. data/spec/models/strategy_quotes_greek_spec.rb +1 -1
  471. data/spec/models/strategy_quotes_spec.rb +1 -1
  472. data/spec/models/strategy_type_spec.rb +1 -1
  473. data/spec/models/sub_period_return_rate_spec.rb +1 -1
  474. data/spec/models/symbol_currency_spec.rb +1 -1
  475. data/spec/models/symbol_exchange_spec.rb +1 -1
  476. data/spec/models/symbol_query_spec.rb +1 -1
  477. data/spec/models/symbol_spec.rb +1 -1
  478. data/spec/models/symbols_quotes_inner_spec.rb +1 -1
  479. data/spec/models/take_profit_spec.rb +1 -1
  480. data/spec/models/tax_lot_spec.rb +1 -1
  481. data/spec/models/time_in_force_strict_spec.rb +1 -1
  482. data/spec/models/timeframe_spec.rb +1 -1
  483. data/spec/models/trade_detection_add_subscription_request_spec.rb +1 -1
  484. data/spec/models/trade_detection_cancel_subscription_request_spec.rb +1 -1
  485. data/spec/models/trade_detection_cancel_subscription_response_spec.rb +1 -1
  486. data/spec/models/trade_detection_subscription_spec.rb +1 -1
  487. data/spec/models/trading_instrument_spec.rb +1 -1
  488. data/spec/models/trading_instrument_type_spec.rb +1 -1
  489. data/spec/models/trading_search_cryptocurrency_pair_instruments200_response_spec.rb +1 -1
  490. data/spec/models/trading_session_spec.rb +1 -1
  491. data/spec/models/trailing_stop_spec.rb +1 -1
  492. data/spec/models/transactions_status_spec.rb +1 -1
  493. data/spec/models/type_spec.rb +1 -1
  494. data/spec/models/underlying_cfd_instrument_spec.rb +1 -1
  495. data/spec/models/underlying_option_instrument_spec.rb +1 -1
  496. data/spec/models/underlying_symbol_exchange_spec.rb +1 -1
  497. data/spec/models/underlying_symbol_spec.rb +1 -1
  498. data/spec/models/underlying_symbol_type_spec.rb +1 -1
  499. data/spec/models/universal_activity_spec.rb +1 -1
  500. data/spec/models/universal_symbol_spec.rb +1 -1
  501. data/spec/models/us_exchange_spec.rb +1 -1
  502. data/spec/models/user_i_dand_secret_spec.rb +1 -1
  503. data/spec/models/validated_trade_body_spec.rb +1 -1
  504. data/spec/regression/all_account_positions_spec.rb +86 -0
  505. data/spec/regression/fixtures/all_account_positions.json +33 -0
  506. data/spec/regression/request_signing_spec.rb +46 -0
  507. data/spec/spec_helper.rb +1 -1
  508. metadata +262 -217
  509. data/Gemfile.lock +0 -91
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+
4
+ describe 'All account positions response deserialization' do
5
+ let(:payload) do
6
+ JSON.parse(File.read(File.join(__dir__, 'fixtures/all_account_positions.json')))
7
+ end
8
+ let(:body) { JSON.generate(payload) }
9
+ let(:configuration) do
10
+ SnapTrade::Configuration.new.tap do |config|
11
+ config.host = 'https://sdk-test.invalid'
12
+ config.client_id = 'TEST_CLIENT'
13
+ config.consumer_key = 'TEST_KEY'
14
+ end
15
+ end
16
+ let(:api_client) { SnapTrade::ApiClient.new(configuration) }
17
+ let(:api) { SnapTrade::AccountInformationApi.new(api_client) }
18
+ let(:arguments) do
19
+ { user_id: 12345, user_secret: 'TEST_SECRET', account_id: 'TEST_ACCOUNT' }
20
+ end
21
+ let(:stubs) do
22
+ Faraday::Adapter::Test::Stubs.new do |stub|
23
+ stub.get('/accounts/TEST_ACCOUNT/positions/all') do
24
+ [200, { 'content-type' => 'application/json' }, body]
25
+ end
26
+ end
27
+ end
28
+ let(:connection) do
29
+ Faraday.new(url: configuration.base_url) { |conn| conn.adapter :test, stubs }
30
+ end
31
+
32
+ before do
33
+ allow(api_client).to receive(:connection).and_return(connection)
34
+ end
35
+
36
+ after do
37
+ stubs.verify_stubbed_calls
38
+ end
39
+
40
+ [:get_all_account_positions, :get_all_account_positions_with_http_info].each do |operation|
41
+ context operation.to_s do
42
+ let(:data) do
43
+ result = api.public_send(operation, **arguments)
44
+ if operation == :get_all_account_positions_with_http_info
45
+ parsed, status, headers, response = result
46
+ expect(status).to eq(200)
47
+ expect(headers['content-type']).to eq('application/json')
48
+ expect(response.body).to eq(body)
49
+ parsed
50
+ else
51
+ result
52
+ end
53
+ end
54
+
55
+ it 'returns the full response and both bond instruments from a populated HTTP 200 body' do
56
+ expect(data).to be_a(SnapTrade::AllAccountPositionsResponse)
57
+ expect(data.data_freshness.as_of).to eq(Time.utc(2026, 9, 8, 11, 2, 57))
58
+ expect(data.results.length).to eq(2)
59
+ expect(data.results.map(&:units)).to eq([70.0, 70.0])
60
+ expect(data.results.map(&:price)).to eq([99.768, 100.025])
61
+ expect(data.results.map(&:cost_basis)).to eq([97.51, 100.25])
62
+ expect(data.results.map(&:instrument)).to all(be_a(SnapTrade::OtherInstrument))
63
+ expect(data.results.map { |position| position.instrument.kind }).to eq(['bond', 'bond'])
64
+ expect(data.results.map { |position| position.instrument.symbol }).to eq(['912797SA6', '91282CJT9'])
65
+ expect(data.to_hash[:results].map { |position| position[:instrument][:kind] }).to eq(['bond', 'bond'])
66
+ end
67
+
68
+ it 'keeps a response object when there are no positions' do
69
+ payload['results'] = []
70
+
71
+ expect(data).to be_a(SnapTrade::AllAccountPositionsResponse)
72
+ expect(data.results).to eq([])
73
+ expect(data.data_freshness.as_of).to eq(Time.utc(2026, 9, 8, 11, 2, 57))
74
+ end
75
+
76
+ it 'retains instruments when bond and other positions appear together' do
77
+ payload['results'][1]['instrument']['kind'] = 'other'
78
+
79
+ expect(data).to be_a(SnapTrade::AllAccountPositionsResponse)
80
+ expect(data.results.map(&:instrument)).to all(be_a(SnapTrade::OtherInstrument))
81
+ expect(data.results.map { |position| position.instrument.kind }).to eq(['bond', 'other'])
82
+ expect(data.results.map { |position| position.instrument.symbol }).to eq(['912797SA6', '91282CJT9'])
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,33 @@
1
+ {
2
+ "results": [
3
+ {
4
+ "instrument": {
5
+ "kind": "bond",
6
+ "id": "a7ade77d-74f4-4d8a-a1f8-1a582c2f4e3b",
7
+ "symbol": "912797SA6",
8
+ "raw_symbol": "912797SA6",
9
+ "description": "UNITED STATES TREAS BILLS ZERO CPN 0.00000% 10/01/2026",
10
+ "currency": "USD"
11
+ },
12
+ "units": "70",
13
+ "price": "99.768",
14
+ "cost_basis": "97.51",
15
+ "currency": "USD"
16
+ },
17
+ {
18
+ "instrument": {
19
+ "kind": "bond",
20
+ "id": "e538a57c-2bb8-40e2-812d-d07ee525b1cf",
21
+ "symbol": "91282CJT9",
22
+ "raw_symbol": "91282CJT9",
23
+ "description": "UNITED STATES TREAS SER AJ-2027 4.00000% 01/15/2027 NTS NOTE",
24
+ "currency": "USD"
25
+ },
26
+ "units": "70",
27
+ "price": "100.025",
28
+ "cost_basis": "100.25",
29
+ "currency": "USD"
30
+ }
31
+ ],
32
+ "data_freshness": { "as_of": "2026-09-08T11:02:57Z" }
33
+ }
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe SnapTrade::ApiClientCustom do
4
+ let(:configuration) do
5
+ SnapTrade::Configuration.new.tap { |config| config.consumer_key = 'TEST_KEY' }
6
+ end
7
+ let(:request) do
8
+ Faraday::Request.create(:post) do |req|
9
+ req.path = path
10
+ req.body = body
11
+ req.headers = {}
12
+ req.params = {
13
+ clientId: 'TEST_CLIENT',
14
+ userId: 'TEST_USER',
15
+ userSecret: 'TEST_SECRET'
16
+ }
17
+ end
18
+ end
19
+
20
+ before do
21
+ allow(Time).to receive(:now).and_return(Time.at(1_700_000_000))
22
+ end
23
+
24
+ context 'without a request body' do
25
+ let(:path) { '/accounts/TEST_ACCOUNT/positions/all' }
26
+ let(:body) { nil }
27
+
28
+ it 'preserves the existing signature bytes' do
29
+ described_class.request_hook(request, configuration)
30
+
31
+ expect(request.params[:timestamp]).to eq(1_700_000_000)
32
+ expect(request.headers[:Signature]).to eq('R7iYdxifiq/4joFEkOkaQj9QiW8LsgxmSDXco44gqtk=')
33
+ end
34
+ end
35
+
36
+ context 'with unsorted JSON body keys' do
37
+ let(:path) { '/orders' }
38
+ let(:body) { '{"z":2,"a":1}' }
39
+
40
+ it 'preserves body key sorting and the existing signature bytes' do
41
+ described_class.request_hook(request, configuration)
42
+
43
+ expect(request.headers[:Signature]).to eq('Zs3cXbvLmIEVPi69lHV6rah6wZ1phfk9cK6kbTYnSf4=')
44
+ end
45
+ end
46
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #SnapTrade
3
3
 
4
- #Connect brokerage accounts to your app for live positions and trading
4
+ #Connect brokerage accounts to your app for live positions and trading. ## Rate limiting Two limits apply to requests signed with your `clientId`. The stricter one wins, and exceeding either returns `429 Too Many Requests`. - **Customer-level** — 250 requests/minute by default, scoped to your `clientId` and applied across all endpoints. Reported in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. - **Account-level** — 10 requests/minute per account, scoped to (`clientId`, `accountId`). All covered operations for one account draw on the same bucket — reading balances and reading positions share it — and enforcement does not depend on the HTTP method, so updating an account consumes the same bucket as reading it. Only enforced for Personal users, and only for integrations it has been rolled out to — it is not yet in force for every Personal integration. It also does not apply on every operation that documents a 429 below. Where it applies it is reported in `X-RateLimit-Account-Limit`, `X-RateLimit-Account-Remaining` and `X-RateLimit-Account-Reset`. Do not read the absence of those headers as proof the limit is off — some configurations omit the rate limit headers while still enforcing the limit, so header absence tells you nothing about your allowance. On a 429, `X-RateLimit-Remaining: 0` means you hit the customer-level limit and `X-RateLimit-Account-Remaining: 0` means the account-level one. Wait for the corresponding `*-Reset` value (seconds) before retrying, or fall back to exponential backoff with jitter. Not every 429 is explained by those headers. A separate per-authenticated-user limit, reported in no `X-RateLimit-*` header, covers OAuth-authenticated requests and signed requests in configurations where the customer-level limit is not in effect — on the operations that use the default throttles. A few operations override those and are governed by the customer-level limit alone. The two do not stack: a signed request governed by the customer-level limit above is not additionally subject to the per-user one. If a 429 arrives with no header at zero — or with no `X-RateLimit-*` headers at all — honour `Retry-After` and back off. Treat the remaining counts as a hint, not a guarantee that the next request will succeed. Because the customer-level limit applies everywhere, any signed request can return 429. **OAuth-authenticated requests are an exception.** They are not subject to the customer-level limit and do not receive `X-RateLimit-Limit`, `X-RateLimit-Remaining` or `X-RateLimit-Reset` — do not wait on those headers or design around a customer-level allowance on this path. The account-level limit still applies to them on the account-data endpoints above, reported in the `X-RateLimit-Account-*` headers. On operations using the default throttles the per-user limit above applies to them as well, so an OAuth request can be rejected while the account headers still show capacity; on the few operations that override those throttles, OAuth callers have no per-user ceiling at all. Drive retries from `Retry-After` and exponential backoff with jitter rather than from the headers. See https://docs.snaptrade.com/docs/ratelimiting.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: api@snaptrade.com