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.
- checksums.yaml +4 -4
- data/README.md +62 -5
- data/lib/snaptrade/api/account_information_api.rb +1 -1
- data/lib/snaptrade/api/api_status_api.rb +1 -1
- data/lib/snaptrade/api/authentication_api.rb +1 -1
- data/lib/snaptrade/api/connections_api.rb +1 -1
- data/lib/snaptrade/api/experimental_endpoints_api.rb +1 -1
- data/lib/snaptrade/api/reference_data_api.rb +1 -1
- data/lib/snaptrade/api/trading_api.rb +1 -1
- data/lib/snaptrade/api_client.rb +1 -1
- data/lib/snaptrade/api_client_custom.rb +1 -1
- data/lib/snaptrade/api_error.rb +1 -1
- data/lib/snaptrade/configuration.rb +1 -1
- data/lib/snaptrade/models/account.rb +1 -1
- data/lib/snaptrade/models/account_balance.rb +1 -1
- data/lib/snaptrade/models/account_balance_total.rb +1 -1
- data/lib/snaptrade/models/account_category.rb +1 -1
- data/lib/snaptrade/models/account_holdings.rb +1 -1
- data/lib/snaptrade/models/account_holdings_account.rb +1 -1
- data/lib/snaptrade/models/account_information_get_user_account_order_detail_request.rb +1 -1
- data/lib/snaptrade/models/account_order_record.rb +1 -1
- data/lib/snaptrade/models/account_order_record_child_brokerage_order_ids.rb +1 -1
- data/lib/snaptrade/models/account_order_record_leg.rb +1 -1
- data/lib/snaptrade/models/account_order_record_leg_instrument.rb +1 -1
- data/lib/snaptrade/models/account_order_record_option_symbol.rb +1 -1
- data/lib/snaptrade/models/account_order_record_quote_currency.rb +1 -1
- data/lib/snaptrade/models/account_order_record_quote_universal_symbol.rb +1 -1
- data/lib/snaptrade/models/account_order_record_status.rb +1 -1
- data/lib/snaptrade/models/account_order_record_status_v2.rb +1 -1
- data/lib/snaptrade/models/account_order_record_trailing_stop.rb +1 -1
- data/lib/snaptrade/models/account_order_record_universal_symbol.rb +1 -1
- data/lib/snaptrade/models/account_order_record_v2.rb +1 -1
- data/lib/snaptrade/models/account_order_record_v2_order_role.rb +1 -1
- data/lib/snaptrade/models/account_orders_v2_response.rb +1 -1
- data/lib/snaptrade/models/account_position.rb +1 -1
- data/lib/snaptrade/models/account_simple.rb +1 -1
- data/lib/snaptrade/models/account_status.rb +1 -1
- data/lib/snaptrade/models/account_sync_status.rb +1 -1
- data/lib/snaptrade/models/account_universal_activity.rb +1 -1
- data/lib/snaptrade/models/account_universal_activity_currency.rb +1 -1
- data/lib/snaptrade/models/account_universal_activity_currency_universal_symbol.rb +1 -1
- data/lib/snaptrade/models/account_universal_activity_option_symbol.rb +1 -1
- data/lib/snaptrade/models/account_universal_activity_symbol.rb +1 -1
- data/lib/snaptrade/models/account_value_history_item.rb +1 -1
- data/lib/snaptrade/models/account_value_history_response.rb +1 -1
- data/lib/snaptrade/models/action_strict.rb +1 -1
- data/lib/snaptrade/models/action_strict_with_options.rb +1 -1
- data/lib/snaptrade/models/adr_instrument.rb +1 -1
- data/lib/snaptrade/models/adr_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/all_account_positions_response.rb +1 -1
- data/lib/snaptrade/models/all_account_positions_response_data_freshness.rb +1 -1
- data/lib/snaptrade/models/auth_type.rb +1 -1
- data/lib/snaptrade/models/authentication_login_snap_trade_user200_response.rb +1 -1
- data/lib/snaptrade/models/balance.rb +1 -1
- data/lib/snaptrade/models/balance_currency.rb +1 -1
- data/lib/snaptrade/models/brokerage.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization_data_freshness_mode.rb +4 -2
- data/lib/snaptrade/models/brokerage_authorization_disabled_confirmation.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization_refresh_confirmation.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization_transactions_sync_confirmation.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization_type_read_only.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization_type_read_only_brokerage.rb +1 -1
- data/lib/snaptrade/models/brokerage_authorization_type_read_only_type.rb +1 -1
- data/lib/snaptrade/models/brokerage_instrument.rb +1 -1
- data/lib/snaptrade/models/brokerage_instruments_response.rb +1 -1
- data/lib/snaptrade/models/brokerage_type.rb +1 -1
- data/lib/snaptrade/models/cancel_order_response.rb +1 -1
- data/lib/snaptrade/models/cash_change_direction.rb +1 -1
- data/lib/snaptrade/models/cef_instrument.rb +1 -1
- data/lib/snaptrade/models/cef_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/cfd_instrument.rb +1 -1
- data/lib/snaptrade/models/cfd_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/child_brokerage_order_ids.rb +1 -1
- data/lib/snaptrade/models/complex_order_leg.rb +1 -1
- data/lib/snaptrade/models/complex_order_leg_order_role.rb +1 -1
- data/lib/snaptrade/models/complex_order_response.rb +1 -1
- data/lib/snaptrade/models/complex_order_response_type.rb +1 -1
- data/lib/snaptrade/models/connection_account.rb +1 -1
- data/lib/snaptrade/models/connection_account_sync_status.rb +1 -1
- data/lib/snaptrade/models/connection_portal_version.rb +1 -1
- data/lib/snaptrade/models/connection_type.rb +1 -1
- data/lib/snaptrade/models/crypto_instrument.rb +1 -1
- data/lib/snaptrade/models/crypto_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/crypto_order_form.rb +1 -1
- data/lib/snaptrade/models/crypto_order_form_time_in_force.rb +1 -1
- data/lib/snaptrade/models/crypto_order_form_type.rb +1 -1
- data/lib/snaptrade/models/crypto_order_preview.rb +1 -1
- data/lib/snaptrade/models/crypto_order_preview_estimated_fee.rb +1 -1
- data/lib/snaptrade/models/crypto_trading_instrument.rb +1 -1
- data/lib/snaptrade/models/crypto_trading_instrument_type.rb +1 -1
- data/lib/snaptrade/models/cryptocurrency_pair.rb +1 -1
- data/lib/snaptrade/models/cryptocurrency_pair_quote.rb +1 -1
- data/lib/snaptrade/models/currency.rb +1 -1
- data/lib/snaptrade/models/delete_connection_confirmation.rb +1 -1
- data/lib/snaptrade/models/delete_user_response.rb +1 -1
- data/lib/snaptrade/models/deposit_account.rb +1 -1
- data/lib/snaptrade/models/deposit_account_kind.rb +1 -1
- data/lib/snaptrade/models/deposit_account_net_value.rb +1 -1
- data/lib/snaptrade/models/deposit_account_sync_status.rb +1 -1
- data/lib/snaptrade/models/dividend_at_date.rb +1 -1
- data/lib/snaptrade/models/encrypted_response.rb +1 -1
- data/lib/snaptrade/models/encrypted_response_encrypted_message_data.rb +1 -1
- data/lib/snaptrade/models/etf_instrument.rb +1 -1
- data/lib/snaptrade/models/etf_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/exchange.rb +1 -1
- data/lib/snaptrade/models/exchange_rate_pairs.rb +1 -1
- data/lib/snaptrade/models/figi_instrument.rb +1 -1
- data/lib/snaptrade/models/future_instrument.rb +1 -1
- data/lib/snaptrade/models/future_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/holdings_status.rb +1 -1
- data/lib/snaptrade/models/institution.rb +1 -1
- data/lib/snaptrade/models/instrument.rb +1 -1
- data/lib/snaptrade/models/investment_account.rb +1 -1
- data/lib/snaptrade/models/investment_account_net_value.rb +1 -1
- data/lib/snaptrade/models/kind.rb +1 -1
- data/lib/snaptrade/models/line_of_credit_account.rb +27 -6
- data/lib/snaptrade/models/line_of_credit_account_available_credit.rb +228 -0
- data/lib/snaptrade/models/line_of_credit_account_kind.rb +1 -1
- data/lib/snaptrade/models/line_of_credit_account_minimum_payment_amount.rb +1 -1
- data/lib/snaptrade/models/line_of_credit_account_net_value.rb +1 -1
- data/lib/snaptrade/models/line_of_credit_account_sync_status.rb +1 -1
- data/lib/snaptrade/models/login_redirect_uri.rb +1 -1
- data/lib/snaptrade/models/manual_trade.rb +1 -1
- data/lib/snaptrade/models/manual_trade_and_impact.rb +1 -1
- data/lib/snaptrade/models/manual_trade_balance.rb +1 -1
- data/lib/snaptrade/models/manual_trade_form.rb +1 -1
- data/lib/snaptrade/models/manual_trade_form_bracket.rb +1 -1
- data/lib/snaptrade/models/manual_trade_form_complex.rb +1 -1
- data/lib/snaptrade/models/manual_trade_form_complex_type.rb +1 -1
- data/lib/snaptrade/models/manual_trade_form_notional_value.rb +1 -1
- data/lib/snaptrade/models/manual_trade_form_with_options.rb +1 -1
- data/lib/snaptrade/models/manual_trade_impact.rb +1 -1
- data/lib/snaptrade/models/manual_trade_place_time_in_force_strict.rb +1 -1
- data/lib/snaptrade/models/manual_trade_replace_form.rb +1 -1
- data/lib/snaptrade/models/manual_trade_symbol.rb +1 -1
- data/lib/snaptrade/models/mleg_action_strict.rb +1 -1
- data/lib/snaptrade/models/mleg_instrument_type.rb +1 -1
- data/lib/snaptrade/models/mleg_leg.rb +1 -1
- data/lib/snaptrade/models/mleg_order_response.rb +1 -1
- data/lib/snaptrade/models/mleg_order_type_strict.rb +1 -1
- data/lib/snaptrade/models/mleg_price_effect_strict.rb +1 -1
- data/lib/snaptrade/models/mleg_trade_form.rb +1 -1
- data/lib/snaptrade/models/mleg_trading_instrument.rb +1 -1
- data/lib/snaptrade/models/model400_failed_request_response.rb +1 -1
- data/lib/snaptrade/models/model401_failed_request_response.rb +1 -1
- data/lib/snaptrade/models/model402_brokerage_auth_already_disabled_exception.rb +1 -1
- data/lib/snaptrade/models/model402_brokerage_auth_disabled_response.rb +1 -1
- data/lib/snaptrade/models/model403_failed_request_response.rb +1 -1
- data/lib/snaptrade/models/model403_feature_not_enabled_response.rb +1 -1
- data/lib/snaptrade/models/model404_failed_request_response.rb +1 -1
- data/lib/snaptrade/models/model425_failed_request_response.rb +1 -1
- data/lib/snaptrade/models/model429_too_many_requests_response.rb +1 -1
- data/lib/snaptrade/models/model500_unexpected_exception_response.rb +1 -1
- data/lib/snaptrade/models/model501_not_implemented_response.rb +1 -1
- data/lib/snaptrade/models/model503_brokerage_request_response.rb +1 -1
- data/lib/snaptrade/models/monthly_dividends.rb +1 -1
- data/lib/snaptrade/models/mutual_fund_instrument.rb +1 -1
- data/lib/snaptrade/models/mutual_fund_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/net_contributions.rb +1 -1
- data/lib/snaptrade/models/net_dividend.rb +1 -1
- data/lib/snaptrade/models/notional_value.rb +1 -1
- data/lib/snaptrade/models/o_auth_webhook_base.rb +1 -1
- data/lib/snaptrade/models/option_brokerage_symbol.rb +1 -1
- data/lib/snaptrade/models/option_chain_inner.rb +1 -1
- data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner.rb +1 -1
- data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner.rb +1 -1
- data/lib/snaptrade/models/option_impact.rb +1 -1
- data/lib/snaptrade/models/option_instrument.rb +1 -1
- data/lib/snaptrade/models/option_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/option_leg.rb +1 -1
- data/lib/snaptrade/models/option_leg_action.rb +1 -1
- data/lib/snaptrade/models/option_quote.rb +1 -1
- data/lib/snaptrade/models/option_quote_greeks.rb +1 -1
- data/lib/snaptrade/models/option_strategy.rb +1 -1
- data/lib/snaptrade/models/option_strategy_legs_inner.rb +1 -1
- data/lib/snaptrade/models/option_type.rb +1 -1
- data/lib/snaptrade/models/options_position.rb +1 -1
- data/lib/snaptrade/models/options_position_currency.rb +1 -1
- data/lib/snaptrade/models/options_symbol.rb +1 -1
- data/lib/snaptrade/models/options_symbol_option_type.rb +1 -1
- data/lib/snaptrade/models/order_role.rb +1 -1
- data/lib/snaptrade/models/order_type_strict.rb +1 -1
- data/lib/snaptrade/models/order_updated_response.rb +1 -1
- data/lib/snaptrade/models/order_updated_response_order.rb +1 -1
- data/lib/snaptrade/models/other_instrument.rb +1 -1
- data/lib/snaptrade/models/other_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/paginated_universal_activity.rb +1 -1
- data/lib/snaptrade/models/pagination_details.rb +1 -1
- data/lib/snaptrade/models/partner_data.rb +1 -1
- data/lib/snaptrade/models/past_value.rb +1 -1
- data/lib/snaptrade/models/performance_custom.rb +1 -1
- data/lib/snaptrade/models/position.rb +1 -1
- data/lib/snaptrade/models/position_currency.rb +1 -1
- data/lib/snaptrade/models/position_symbol.rb +1 -1
- data/lib/snaptrade/models/price_effect.rb +1 -1
- data/lib/snaptrade/models/rate_of_return_object.rb +1 -1
- data/lib/snaptrade/models/rate_of_return_response.rb +1 -1
- data/lib/snaptrade/models/recent_orders_response.rb +1 -1
- data/lib/snaptrade/models/schema_version.rb +1 -1
- data/lib/snaptrade/models/security_type.rb +1 -1
- data/lib/snaptrade/models/session_event.rb +1 -1
- data/lib/snaptrade/models/session_event_type.rb +1 -1
- data/lib/snaptrade/models/simple_order_form.rb +1 -1
- data/lib/snaptrade/models/simple_order_form_time_in_force.rb +1 -1
- data/lib/snaptrade/models/simple_order_form_type.rb +1 -1
- data/lib/snaptrade/models/snap_trade_holdings_account.rb +1 -1
- data/lib/snaptrade/models/snap_trade_holdings_total_value.rb +1 -1
- data/lib/snaptrade/models/snap_trade_login_user_request_body.rb +1 -1
- data/lib/snaptrade/models/snap_trade_register_user_request_body.rb +1 -1
- data/lib/snaptrade/models/snaptrade.rb +1 -1
- data/lib/snaptrade/models/status.rb +1 -1
- data/lib/snaptrade/models/stock_instrument.rb +1 -1
- data/lib/snaptrade/models/stock_instrument_figi_instrument.rb +1 -1
- data/lib/snaptrade/models/stock_instrument_kind.rb +1 -1
- data/lib/snaptrade/models/stop_loss.rb +1 -1
- data/lib/snaptrade/models/strategy_order_record.rb +1 -1
- data/lib/snaptrade/models/strategy_order_record_status.rb +1 -1
- data/lib/snaptrade/models/strategy_quotes.rb +1 -1
- data/lib/snaptrade/models/strategy_quotes_greek.rb +1 -1
- data/lib/snaptrade/models/strategy_type.rb +1 -1
- data/lib/snaptrade/models/sub_period_return_rate.rb +1 -1
- data/lib/snaptrade/models/symbol.rb +1 -1
- data/lib/snaptrade/models/symbol_currency.rb +1 -1
- data/lib/snaptrade/models/symbol_exchange.rb +1 -1
- data/lib/snaptrade/models/symbol_query.rb +1 -1
- data/lib/snaptrade/models/symbols_quotes_inner.rb +1 -1
- data/lib/snaptrade/models/take_profit.rb +1 -1
- data/lib/snaptrade/models/tax_lot.rb +1 -1
- data/lib/snaptrade/models/time_in_force_strict.rb +1 -1
- data/lib/snaptrade/models/timeframe.rb +1 -1
- data/lib/snaptrade/models/trade_detection_add_subscription_request.rb +1 -1
- data/lib/snaptrade/models/trade_detection_cancel_subscription_request.rb +1 -1
- data/lib/snaptrade/models/trade_detection_cancel_subscription_response.rb +1 -1
- data/lib/snaptrade/models/trade_detection_subscription.rb +1 -1
- data/lib/snaptrade/models/trading_instrument.rb +1 -1
- data/lib/snaptrade/models/trading_instrument_type.rb +1 -1
- data/lib/snaptrade/models/trading_search_cryptocurrency_pair_instruments200_response.rb +1 -1
- data/lib/snaptrade/models/trading_session.rb +1 -1
- data/lib/snaptrade/models/trailing_stop.rb +1 -1
- data/lib/snaptrade/models/transactions_status.rb +1 -1
- data/lib/snaptrade/models/type.rb +1 -1
- data/lib/snaptrade/models/underlying_cfd_instrument.rb +1 -1
- data/lib/snaptrade/models/underlying_option_instrument.rb +1 -1
- data/lib/snaptrade/models/underlying_symbol.rb +1 -1
- data/lib/snaptrade/models/underlying_symbol_exchange.rb +1 -1
- data/lib/snaptrade/models/underlying_symbol_type.rb +1 -1
- data/lib/snaptrade/models/universal_activity.rb +1 -1
- data/lib/snaptrade/models/universal_symbol.rb +1 -1
- data/lib/snaptrade/models/us_exchange.rb +1 -1
- data/lib/snaptrade/models/user_i_dand_secret.rb +1 -1
- data/lib/snaptrade/models/validated_trade_body.rb +1 -1
- data/lib/snaptrade/version.rb +2 -2
- data/lib/snaptrade.rb +2 -1
- data/snaptrade.gemspec +2 -2
- data/spec/api/account_information_api_spec.rb +1 -1
- data/spec/api/api_status_api_spec.rb +1 -1
- data/spec/api/authentication_api_spec.rb +1 -1
- data/spec/api/connections_api_spec.rb +1 -1
- data/spec/api/experimental_endpoints_api_spec.rb +1 -1
- data/spec/api/reference_data_api_spec.rb +1 -1
- data/spec/api/trading_api_spec.rb +1 -1
- data/spec/api_client_spec.rb +1 -1
- data/spec/configuration_spec.rb +1 -1
- data/spec/models/account_balance_spec.rb +1 -1
- data/spec/models/account_balance_total_spec.rb +1 -1
- data/spec/models/account_category_spec.rb +1 -1
- data/spec/models/account_holdings_account_spec.rb +1 -1
- data/spec/models/account_holdings_spec.rb +1 -1
- data/spec/models/account_information_get_user_account_order_detail_request_spec.rb +1 -1
- data/spec/models/account_order_record_child_brokerage_order_ids_spec.rb +1 -1
- data/spec/models/account_order_record_leg_instrument_spec.rb +1 -1
- data/spec/models/account_order_record_leg_spec.rb +1 -1
- data/spec/models/account_order_record_option_symbol_spec.rb +1 -1
- data/spec/models/account_order_record_quote_currency_spec.rb +1 -1
- data/spec/models/account_order_record_quote_universal_symbol_spec.rb +1 -1
- data/spec/models/account_order_record_spec.rb +1 -1
- data/spec/models/account_order_record_status_spec.rb +1 -1
- data/spec/models/account_order_record_status_v2_spec.rb +1 -1
- data/spec/models/account_order_record_trailing_stop_spec.rb +1 -1
- data/spec/models/account_order_record_universal_symbol_spec.rb +1 -1
- data/spec/models/account_order_record_v2_order_role_spec.rb +1 -1
- data/spec/models/account_order_record_v2_spec.rb +1 -1
- data/spec/models/account_orders_v2_response_spec.rb +1 -1
- data/spec/models/account_position_spec.rb +1 -1
- data/spec/models/account_simple_spec.rb +1 -1
- data/spec/models/account_spec.rb +1 -1
- data/spec/models/account_status_spec.rb +1 -1
- data/spec/models/account_sync_status_spec.rb +1 -1
- data/spec/models/account_universal_activity_currency_spec.rb +1 -1
- data/spec/models/account_universal_activity_currency_universal_symbol_spec.rb +1 -1
- data/spec/models/account_universal_activity_option_symbol_spec.rb +1 -1
- data/spec/models/account_universal_activity_spec.rb +1 -1
- data/spec/models/account_universal_activity_symbol_spec.rb +1 -1
- data/spec/models/account_value_history_item_spec.rb +1 -1
- data/spec/models/account_value_history_response_spec.rb +1 -1
- data/spec/models/action_strict_spec.rb +1 -1
- data/spec/models/action_strict_with_options_spec.rb +1 -1
- data/spec/models/adr_instrument_kind_spec.rb +1 -1
- data/spec/models/adr_instrument_spec.rb +1 -1
- data/spec/models/all_account_positions_response_data_freshness_spec.rb +1 -1
- data/spec/models/all_account_positions_response_spec.rb +1 -1
- data/spec/models/auth_type_spec.rb +1 -1
- data/spec/models/authentication_login_snap_trade_user200_response_spec.rb +1 -1
- data/spec/models/balance_currency_spec.rb +1 -1
- data/spec/models/balance_spec.rb +1 -1
- data/spec/models/brokerage_authorization_data_freshness_mode_spec.rb +1 -1
- data/spec/models/brokerage_authorization_disabled_confirmation_spec.rb +1 -1
- data/spec/models/brokerage_authorization_refresh_confirmation_spec.rb +1 -1
- data/spec/models/brokerage_authorization_spec.rb +1 -1
- data/spec/models/brokerage_authorization_transactions_sync_confirmation_spec.rb +1 -1
- data/spec/models/brokerage_authorization_type_read_only_brokerage_spec.rb +1 -1
- data/spec/models/brokerage_authorization_type_read_only_spec.rb +1 -1
- data/spec/models/brokerage_authorization_type_read_only_type_spec.rb +1 -1
- data/spec/models/brokerage_instrument_spec.rb +1 -1
- data/spec/models/brokerage_instruments_response_spec.rb +1 -1
- data/spec/models/brokerage_spec.rb +1 -1
- data/spec/models/brokerage_type_spec.rb +1 -1
- data/spec/models/cancel_order_response_spec.rb +1 -1
- data/spec/models/cash_change_direction_spec.rb +1 -1
- data/spec/models/cef_instrument_kind_spec.rb +1 -1
- data/spec/models/cef_instrument_spec.rb +1 -1
- data/spec/models/cfd_instrument_kind_spec.rb +1 -1
- data/spec/models/cfd_instrument_spec.rb +1 -1
- data/spec/models/child_brokerage_order_ids_spec.rb +1 -1
- data/spec/models/complex_order_leg_order_role_spec.rb +1 -1
- data/spec/models/complex_order_leg_spec.rb +1 -1
- data/spec/models/complex_order_response_spec.rb +1 -1
- data/spec/models/complex_order_response_type_spec.rb +1 -1
- data/spec/models/connection_account_spec.rb +2 -2
- data/spec/models/connection_account_sync_status_spec.rb +1 -1
- data/spec/models/connection_portal_version_spec.rb +1 -1
- data/spec/models/connection_type_spec.rb +1 -1
- data/spec/models/crypto_instrument_kind_spec.rb +1 -1
- data/spec/models/crypto_instrument_spec.rb +1 -1
- data/spec/models/crypto_order_form_spec.rb +1 -1
- data/spec/models/crypto_order_form_time_in_force_spec.rb +1 -1
- data/spec/models/crypto_order_form_type_spec.rb +1 -1
- data/spec/models/crypto_order_preview_estimated_fee_spec.rb +1 -1
- data/spec/models/crypto_order_preview_spec.rb +1 -1
- data/spec/models/crypto_trading_instrument_spec.rb +1 -1
- data/spec/models/crypto_trading_instrument_type_spec.rb +1 -1
- data/spec/models/cryptocurrency_pair_quote_spec.rb +1 -1
- data/spec/models/cryptocurrency_pair_spec.rb +1 -1
- data/spec/models/currency_spec.rb +1 -1
- data/spec/models/delete_connection_confirmation_spec.rb +1 -1
- data/spec/models/delete_user_response_spec.rb +1 -1
- data/spec/models/deposit_account_kind_spec.rb +1 -1
- data/spec/models/deposit_account_net_value_spec.rb +1 -1
- data/spec/models/deposit_account_spec.rb +1 -1
- data/spec/models/deposit_account_sync_status_spec.rb +1 -1
- data/spec/models/dividend_at_date_spec.rb +1 -1
- data/spec/models/encrypted_response_encrypted_message_data_spec.rb +1 -1
- data/spec/models/encrypted_response_spec.rb +1 -1
- data/spec/models/etf_instrument_kind_spec.rb +1 -1
- data/spec/models/etf_instrument_spec.rb +1 -1
- data/spec/models/exchange_rate_pairs_spec.rb +1 -1
- data/spec/models/exchange_spec.rb +1 -1
- data/spec/models/figi_instrument_spec.rb +1 -1
- data/spec/models/future_instrument_kind_spec.rb +1 -1
- data/spec/models/future_instrument_spec.rb +1 -1
- data/spec/models/holdings_status_spec.rb +1 -1
- data/spec/models/institution_spec.rb +1 -1
- data/spec/models/instrument_spec.rb +1 -1
- data/spec/models/investment_account_net_value_spec.rb +1 -1
- data/spec/models/investment_account_spec.rb +1 -1
- data/spec/models/kind_spec.rb +1 -1
- data/spec/models/line_of_credit_account_available_credit_spec.rb +35 -0
- data/spec/models/line_of_credit_account_kind_spec.rb +1 -1
- data/spec/models/line_of_credit_account_minimum_payment_amount_spec.rb +1 -1
- data/spec/models/line_of_credit_account_net_value_spec.rb +1 -1
- data/spec/models/line_of_credit_account_spec.rb +13 -1
- data/spec/models/line_of_credit_account_sync_status_spec.rb +1 -1
- data/spec/models/login_redirect_uri_spec.rb +1 -1
- data/spec/models/manual_trade_and_impact_spec.rb +1 -1
- data/spec/models/manual_trade_balance_spec.rb +1 -1
- data/spec/models/manual_trade_form_bracket_spec.rb +1 -1
- data/spec/models/manual_trade_form_complex_spec.rb +1 -1
- data/spec/models/manual_trade_form_complex_type_spec.rb +1 -1
- data/spec/models/manual_trade_form_notional_value_spec.rb +1 -1
- data/spec/models/manual_trade_form_spec.rb +1 -1
- data/spec/models/manual_trade_form_with_options_spec.rb +1 -1
- data/spec/models/manual_trade_impact_spec.rb +1 -1
- data/spec/models/manual_trade_place_time_in_force_strict_spec.rb +1 -1
- data/spec/models/manual_trade_replace_form_spec.rb +1 -1
- data/spec/models/manual_trade_spec.rb +1 -1
- data/spec/models/manual_trade_symbol_spec.rb +1 -1
- data/spec/models/mleg_action_strict_spec.rb +1 -1
- data/spec/models/mleg_instrument_type_spec.rb +1 -1
- data/spec/models/mleg_leg_spec.rb +1 -1
- data/spec/models/mleg_order_response_spec.rb +1 -1
- data/spec/models/mleg_order_type_strict_spec.rb +1 -1
- data/spec/models/mleg_price_effect_strict_spec.rb +1 -1
- data/spec/models/mleg_trade_form_spec.rb +1 -1
- data/spec/models/mleg_trading_instrument_spec.rb +1 -1
- data/spec/models/model400_failed_request_response_spec.rb +1 -1
- data/spec/models/model401_failed_request_response_spec.rb +1 -1
- data/spec/models/model402_brokerage_auth_already_disabled_exception_spec.rb +1 -1
- data/spec/models/model402_brokerage_auth_disabled_response_spec.rb +1 -1
- data/spec/models/model403_failed_request_response_spec.rb +1 -1
- data/spec/models/model403_feature_not_enabled_response_spec.rb +1 -1
- data/spec/models/model404_failed_request_response_spec.rb +1 -1
- data/spec/models/model425_failed_request_response_spec.rb +1 -1
- data/spec/models/model429_too_many_requests_response_spec.rb +1 -1
- data/spec/models/model500_unexpected_exception_response_spec.rb +1 -1
- data/spec/models/model501_not_implemented_response_spec.rb +1 -1
- data/spec/models/model503_brokerage_request_response_spec.rb +1 -1
- data/spec/models/monthly_dividends_spec.rb +1 -1
- data/spec/models/mutual_fund_instrument_kind_spec.rb +1 -1
- data/spec/models/mutual_fund_instrument_spec.rb +1 -1
- data/spec/models/net_contributions_spec.rb +1 -1
- data/spec/models/net_dividend_spec.rb +1 -1
- data/spec/models/notional_value_spec.rb +1 -1
- data/spec/models/o_auth_webhook_base_spec.rb +1 -1
- data/spec/models/option_brokerage_symbol_spec.rb +1 -1
- data/spec/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner_spec.rb +1 -1
- data/spec/models/option_chain_inner_chain_per_root_inner_spec.rb +1 -1
- data/spec/models/option_chain_inner_spec.rb +1 -1
- data/spec/models/option_impact_spec.rb +1 -1
- data/spec/models/option_instrument_kind_spec.rb +1 -1
- data/spec/models/option_instrument_spec.rb +1 -1
- data/spec/models/option_leg_action_spec.rb +1 -1
- data/spec/models/option_leg_spec.rb +1 -1
- data/spec/models/option_quote_greeks_spec.rb +1 -1
- data/spec/models/option_quote_spec.rb +1 -1
- data/spec/models/option_strategy_legs_inner_spec.rb +1 -1
- data/spec/models/option_strategy_spec.rb +1 -1
- data/spec/models/option_type_spec.rb +1 -1
- data/spec/models/options_position_currency_spec.rb +1 -1
- data/spec/models/options_position_spec.rb +1 -1
- data/spec/models/options_symbol_option_type_spec.rb +1 -1
- data/spec/models/options_symbol_spec.rb +1 -1
- data/spec/models/order_role_spec.rb +1 -1
- data/spec/models/order_type_strict_spec.rb +1 -1
- data/spec/models/order_updated_response_order_spec.rb +1 -1
- data/spec/models/order_updated_response_spec.rb +1 -1
- data/spec/models/other_instrument_kind_spec.rb +1 -1
- data/spec/models/other_instrument_spec.rb +1 -1
- data/spec/models/paginated_universal_activity_spec.rb +1 -1
- data/spec/models/pagination_details_spec.rb +1 -1
- data/spec/models/partner_data_spec.rb +1 -1
- data/spec/models/past_value_spec.rb +1 -1
- data/spec/models/performance_custom_spec.rb +1 -1
- data/spec/models/position_currency_spec.rb +1 -1
- data/spec/models/position_spec.rb +1 -1
- data/spec/models/position_symbol_spec.rb +1 -1
- data/spec/models/price_effect_spec.rb +1 -1
- data/spec/models/rate_of_return_object_spec.rb +1 -1
- data/spec/models/rate_of_return_response_spec.rb +1 -1
- data/spec/models/recent_orders_response_spec.rb +1 -1
- data/spec/models/schema_version_spec.rb +1 -1
- data/spec/models/security_type_spec.rb +1 -1
- data/spec/models/session_event_spec.rb +1 -1
- data/spec/models/session_event_type_spec.rb +1 -1
- data/spec/models/simple_order_form_spec.rb +1 -1
- data/spec/models/simple_order_form_time_in_force_spec.rb +1 -1
- data/spec/models/simple_order_form_type_spec.rb +1 -1
- data/spec/models/snap_trade_holdings_account_spec.rb +1 -1
- data/spec/models/snap_trade_holdings_total_value_spec.rb +1 -1
- data/spec/models/snap_trade_login_user_request_body_spec.rb +1 -1
- data/spec/models/snap_trade_register_user_request_body_spec.rb +1 -1
- data/spec/models/snaptrade_spec.rb +1 -1
- data/spec/models/status_spec.rb +1 -1
- data/spec/models/stock_instrument_figi_instrument_spec.rb +1 -1
- data/spec/models/stock_instrument_kind_spec.rb +1 -1
- data/spec/models/stock_instrument_spec.rb +1 -1
- data/spec/models/stop_loss_spec.rb +1 -1
- data/spec/models/strategy_order_record_spec.rb +1 -1
- data/spec/models/strategy_order_record_status_spec.rb +1 -1
- data/spec/models/strategy_quotes_greek_spec.rb +1 -1
- data/spec/models/strategy_quotes_spec.rb +1 -1
- data/spec/models/strategy_type_spec.rb +1 -1
- data/spec/models/sub_period_return_rate_spec.rb +1 -1
- data/spec/models/symbol_currency_spec.rb +1 -1
- data/spec/models/symbol_exchange_spec.rb +1 -1
- data/spec/models/symbol_query_spec.rb +1 -1
- data/spec/models/symbol_spec.rb +1 -1
- data/spec/models/symbols_quotes_inner_spec.rb +1 -1
- data/spec/models/take_profit_spec.rb +1 -1
- data/spec/models/tax_lot_spec.rb +1 -1
- data/spec/models/time_in_force_strict_spec.rb +1 -1
- data/spec/models/timeframe_spec.rb +1 -1
- data/spec/models/trade_detection_add_subscription_request_spec.rb +1 -1
- data/spec/models/trade_detection_cancel_subscription_request_spec.rb +1 -1
- data/spec/models/trade_detection_cancel_subscription_response_spec.rb +1 -1
- data/spec/models/trade_detection_subscription_spec.rb +1 -1
- data/spec/models/trading_instrument_spec.rb +1 -1
- data/spec/models/trading_instrument_type_spec.rb +1 -1
- data/spec/models/trading_search_cryptocurrency_pair_instruments200_response_spec.rb +1 -1
- data/spec/models/trading_session_spec.rb +1 -1
- data/spec/models/trailing_stop_spec.rb +1 -1
- data/spec/models/transactions_status_spec.rb +1 -1
- data/spec/models/type_spec.rb +1 -1
- data/spec/models/underlying_cfd_instrument_spec.rb +1 -1
- data/spec/models/underlying_option_instrument_spec.rb +1 -1
- data/spec/models/underlying_symbol_exchange_spec.rb +1 -1
- data/spec/models/underlying_symbol_spec.rb +1 -1
- data/spec/models/underlying_symbol_type_spec.rb +1 -1
- data/spec/models/universal_activity_spec.rb +1 -1
- data/spec/models/universal_symbol_spec.rb +1 -1
- data/spec/models/us_exchange_spec.rb +1 -1
- data/spec/models/user_i_dand_secret_spec.rb +1 -1
- data/spec/models/validated_trade_body_spec.rb +1 -1
- data/spec/regression/all_account_positions_spec.rb +86 -0
- data/spec/regression/fixtures/all_account_positions.json +33 -0
- data/spec/regression/request_signing_spec.rb +46 -0
- data/spec/spec_helper.rb +1 -1
- metadata +262 -217
- 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
|