snaptrade-python-sdk 10.9.0__py3-none-any.whl → 11.0.152__py3-none-any.whl
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.
- snaptrade_client/__init__.py +2 -2
- snaptrade_client/api_client.py +348 -97
- snaptrade_client/api_response.py +22 -2
- snaptrade_client/apis/path_to_api.py +102 -132
- snaptrade_client/apis/paths/accounts_account_id_activities.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_orders_details.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_orders_v2.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_recent_orders.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_recent_orders_v2.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_return_rates.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_bracket.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_cancel.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_crypto.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_crypto_preview.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_instruments_cryptocurrency_pairs.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_instruments_cryptocurrency_pairs_instrument_symbol_quote.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_options.py +7 -0
- snaptrade_client/apis/paths/accounts_account_id_trading_replace.py +7 -0
- snaptrade_client/apis/paths/authorizations_authorization_id_disable.py +7 -0
- snaptrade_client/apis/paths/authorizations_authorization_id_refresh.py +7 -0
- snaptrade_client/apis/paths/authorizations_authorization_id_return_rates.py +7 -0
- snaptrade_client/apis/paths/brokerages_slug_instruments.py +7 -0
- snaptrade_client/apis/paths/snap_trade_reset_user_secret.py +7 -0
- snaptrade_client/apis/paths/symbols_query.py +7 -0
- snaptrade_client/apis/tag_to_api.py +6 -12
- snaptrade_client/apis/tags/__init__.py +2 -4
- snaptrade_client/apis/tags/account_information_api.py +2 -32
- snaptrade_client/apis/tags/account_information_api_generated.py +43 -0
- snaptrade_client/apis/tags/api_status_api.py +2 -18
- snaptrade_client/apis/tags/{api_disclaimer_api.py → api_status_api_generated.py} +4 -5
- snaptrade_client/apis/tags/authentication_api.py +2 -26
- snaptrade_client/apis/tags/authentication_api_generated.py +29 -0
- snaptrade_client/apis/tags/connections_api.py +2 -24
- snaptrade_client/apis/tags/connections_api_generated.py +33 -0
- snaptrade_client/apis/tags/experimental_endpoints_api.py +6 -0
- snaptrade_client/apis/tags/experimental_endpoints_api_generated.py +23 -0
- snaptrade_client/apis/tags/options_api.py +2 -26
- snaptrade_client/apis/tags/options_api_generated.py +23 -0
- snaptrade_client/apis/tags/reference_data_api.py +2 -38
- snaptrade_client/apis/tags/reference_data_api_generated.py +43 -0
- snaptrade_client/apis/tags/trading_api.py +2 -36
- snaptrade_client/apis/tags/trading_api_generated.py +45 -0
- snaptrade_client/apis/tags/transactions_and_reporting_api.py +2 -20
- snaptrade_client/apis/tags/{error_logs_api.py → transactions_and_reporting_api_generated.py} +6 -5
- snaptrade_client/client.py +21 -18
- snaptrade_client/client.pyi +48 -0
- snaptrade_client/client_custom.py +29 -0
- snaptrade_client/configuration.py +40 -40
- snaptrade_client/exceptions.py +65 -50
- snaptrade_client/model/account.py +209 -71
- snaptrade_client/model/account.pyi +209 -71
- snaptrade_client/model/account_balance.py +140 -0
- snaptrade_client/model/account_balance.pyi +140 -0
- snaptrade_client/model/{target_asset_list.py → account_cash_restrictions.py} +7 -12
- snaptrade_client/model/{target_asset_list.pyi → account_cash_restrictions.pyi} +7 -12
- snaptrade_client/model/account_holdings.py +17 -15
- snaptrade_client/model/account_holdings.pyi +17 -15
- snaptrade_client/model/account_holdings_account.py +99 -23
- snaptrade_client/model/account_holdings_account.pyi +99 -23
- snaptrade_client/model/{signature.py → account_id.py} +2 -2
- snaptrade_client/model/{signature.pyi → account_id.pyi} +2 -2
- snaptrade_client/model/account_ids.py +1 -1
- snaptrade_client/model/account_ids.pyi +1 -1
- snaptrade_client/model/account_meta.py +58 -0
- snaptrade_client/model/account_meta.pyi +58 -0
- snaptrade_client/model/account_order_record.py +455 -64
- snaptrade_client/model/account_order_record.pyi +455 -64
- snaptrade_client/model/account_order_record_leg.py +252 -0
- snaptrade_client/model/account_order_record_leg.pyi +252 -0
- snaptrade_client/model/{brokerage_symbol.py → account_order_record_leg_instrument.py} +34 -43
- snaptrade_client/model/{brokerage_symbol.pyi → account_order_record_leg_instrument.pyi} +34 -43
- snaptrade_client/model/account_order_record_status.py +21 -1
- snaptrade_client/model/account_order_record_status.pyi +21 -1
- snaptrade_client/model/account_order_record_status_v2.py +90 -0
- snaptrade_client/model/account_order_record_status_v2.pyi +75 -0
- snaptrade_client/model/account_order_record_status_v2_nullable.py +105 -0
- snaptrade_client/model/account_order_record_status_v2_nullable.pyi +105 -0
- snaptrade_client/model/account_order_record_v2.py +309 -0
- snaptrade_client/model/account_order_record_v2.pyi +309 -0
- snaptrade_client/model/account_orders_v2_response.py +110 -0
- snaptrade_client/model/account_orders_v2_response.pyi +110 -0
- snaptrade_client/model/account_simple.py +2 -2
- snaptrade_client/model/account_simple.pyi +2 -2
- snaptrade_client/model/account_sync_status.py +18 -4
- snaptrade_client/model/account_sync_status.pyi +18 -4
- snaptrade_client/model/account_universal_activity.py +354 -0
- snaptrade_client/model/account_universal_activity.pyi +354 -0
- snaptrade_client/model/action.py +2 -27
- snaptrade_client/model/action.pyi +2 -20
- snaptrade_client/model/action_strict.py +50 -0
- snaptrade_client/model/{percent.pyi → action_strict.pyi} +14 -4
- snaptrade_client/model/{consumer_key.py → action_strict_v2.py} +2 -2
- snaptrade_client/model/{consumer_key.pyi → action_strict_v2.pyi} +2 -2
- snaptrade_client/model/action_strict_with_options.py +70 -0
- snaptrade_client/model/action_strict_with_options.pyi +59 -0
- snaptrade_client/model/balance.py +72 -11
- snaptrade_client/model/balance.pyi +72 -11
- snaptrade_client/model/brokerage.py +69 -68
- snaptrade_client/model/brokerage.pyi +69 -68
- snaptrade_client/model/brokerage_auth_id.py +25 -0
- snaptrade_client/model/brokerage_auth_id.pyi +25 -0
- snaptrade_client/model/brokerage_auth_ids.py +1 -1
- snaptrade_client/model/brokerage_auth_ids.pyi +1 -1
- snaptrade_client/model/brokerage_authorization.py +46 -48
- snaptrade_client/model/brokerage_authorization.pyi +46 -48
- snaptrade_client/model/{model_asset_class_target.py → brokerage_authorization_disabled_confirmation.py} +13 -16
- snaptrade_client/model/{model_asset_class_target.pyi → brokerage_authorization_disabled_confirmation.pyi} +13 -16
- snaptrade_client/model/brokerage_authorization_meta.py +58 -0
- snaptrade_client/model/brokerage_authorization_meta.pyi +58 -0
- snaptrade_client/model/brokerage_authorization_refresh_confirmation.py +78 -0
- snaptrade_client/model/brokerage_authorization_refresh_confirmation.pyi +78 -0
- snaptrade_client/model/brokerage_authorization_type_read_only.py +10 -73
- snaptrade_client/model/brokerage_authorization_type_read_only.pyi +10 -73
- snaptrade_client/model/{portfolio_group.py → brokerage_authorization_type_read_only_brokerage.py} +15 -5
- snaptrade_client/model/{model_asset_class.py → brokerage_authorization_type_read_only_brokerage.pyi} +15 -5
- snaptrade_client/model/brokerage_exchanges.py +52 -0
- snaptrade_client/model/brokerage_exchanges.pyi +52 -0
- snaptrade_client/model/brokerage_id.py +25 -0
- snaptrade_client/model/brokerage_id.pyi +25 -0
- snaptrade_client/model/brokerage_instrument.py +202 -0
- snaptrade_client/model/brokerage_instrument.pyi +202 -0
- snaptrade_client/model/{model_portfolio_asset_class.py → brokerage_instruments_response.py} +31 -28
- snaptrade_client/model/brokerage_instruments_response.pyi +103 -0
- snaptrade_client/model/brokerage_order_id.py +25 -0
- snaptrade_client/model/brokerage_order_id.pyi +25 -0
- snaptrade_client/model/brokerage_symbol_id.py +25 -0
- snaptrade_client/model/brokerage_symbol_id.pyi +25 -0
- snaptrade_client/model/brokerage_type.py +2 -2
- snaptrade_client/model/brokerage_type.pyi +2 -2
- snaptrade_client/model/cancel_order_response.py +96 -0
- snaptrade_client/model/cancel_order_response.pyi +96 -0
- snaptrade_client/model/cancel_order_response_raw_response.py +62 -0
- snaptrade_client/model/cancel_order_response_raw_response.pyi +62 -0
- snaptrade_client/model/child_brokerage_order_ids.py +86 -0
- snaptrade_client/model/child_brokerage_order_ids.pyi +86 -0
- snaptrade_client/model/child_brokerage_order_ids_nullable.py +90 -0
- snaptrade_client/model/child_brokerage_order_ids_nullable.pyi +90 -0
- snaptrade_client/model/client_id.py +1 -1
- snaptrade_client/model/client_id.pyi +1 -1
- snaptrade_client/model/crypto_order_form.py +249 -0
- snaptrade_client/model/crypto_order_form.pyi +229 -0
- snaptrade_client/model/{excluded_asset.py → crypto_order_preview.py} +14 -14
- snaptrade_client/model/{excluded_asset.pyi → crypto_order_preview.pyi} +14 -14
- snaptrade_client/model/{redirect_tokenand_pin.py → crypto_order_preview_estimated_fee.py} +25 -18
- snaptrade_client/model/{redirect_tokenand_pin.pyi → crypto_order_preview_estimated_fee.pyi} +25 -18
- snaptrade_client/model/{model_portfolio_security.py → crypto_trading_instrument.py} +36 -23
- snaptrade_client/model/{brokerage_authorization_type.py → crypto_trading_instrument.pyi} +28 -18
- snaptrade_client/model/cryptocurrency_base_symbol.py +25 -0
- snaptrade_client/model/cryptocurrency_base_symbol.pyi +25 -0
- snaptrade_client/model/cryptocurrency_increment.py +25 -0
- snaptrade_client/model/cryptocurrency_increment.pyi +25 -0
- snaptrade_client/model/{stop_price.pyi → cryptocurrency_increment_nullable.py} +8 -7
- snaptrade_client/model/{stop_price.py → cryptocurrency_increment_nullable.pyi} +8 -7
- snaptrade_client/model/cryptocurrency_pair.py +120 -0
- snaptrade_client/model/cryptocurrency_pair.pyi +120 -0
- snaptrade_client/model/{snap_trade_api_disclaimer_accept_status.pyi → cryptocurrency_pair_quote.py} +40 -15
- snaptrade_client/model/{snap_trade_api_disclaimer_accept_status.py → cryptocurrency_pair_quote.pyi} +40 -15
- snaptrade_client/model/cryptocurrency_pair_symbol.py +25 -0
- snaptrade_client/model/cryptocurrency_pair_symbol.pyi +25 -0
- snaptrade_client/model/cryptocurrency_quote_symbol.py +25 -0
- snaptrade_client/model/cryptocurrency_quote_symbol.pyi +25 -0
- snaptrade_client/model/cryptocurrency_symbol.py +25 -0
- snaptrade_client/model/cryptocurrency_symbol.pyi +25 -0
- snaptrade_client/model/currency.py +2 -2
- snaptrade_client/model/currency.pyi +2 -2
- snaptrade_client/model/currency_id.py +25 -0
- snaptrade_client/model/currency_id.pyi +25 -0
- snaptrade_client/model/{model_asset_class.pyi → currency_nullable.py} +23 -7
- snaptrade_client/model/{portfolio_group.pyi → currency_nullable.pyi} +23 -7
- snaptrade_client/model/delete_user_response.py +13 -5
- snaptrade_client/model/delete_user_response.pyi +13 -5
- snaptrade_client/model/dividend_at_date.py +1 -1
- snaptrade_client/model/dividend_at_date.pyi +1 -1
- snaptrade_client/model/encrypted_response.py +11 -73
- snaptrade_client/model/encrypted_response.pyi +11 -73
- snaptrade_client/model/encrypted_response_encrypted_message_data.py +96 -0
- snaptrade_client/model/encrypted_response_encrypted_message_data.pyi +96 -0
- snaptrade_client/model/exchange.py +2 -2
- snaptrade_client/model/exchange.pyi +2 -2
- snaptrade_client/model/exchange_id.py +25 -0
- snaptrade_client/model/exchange_id.pyi +25 -0
- snaptrade_client/model/exchange_rate_pairs.py +1 -1
- snaptrade_client/model/exchange_rate_pairs.pyi +1 -1
- snaptrade_client/model/figi_instrument.py +126 -0
- snaptrade_client/model/figi_instrument.pyi +126 -0
- snaptrade_client/model/figi_instrument_nullable.py +130 -0
- snaptrade_client/model/figi_instrument_nullable.pyi +130 -0
- snaptrade_client/model/holdings_status.py +99 -0
- snaptrade_client/model/holdings_status.pyi +99 -0
- snaptrade_client/model/holdings_sync_status_date.py +54 -0
- snaptrade_client/model/holdings_sync_status_date.pyi +54 -0
- snaptrade_client/model/holdings_sync_status_date_nullable.py +54 -0
- snaptrade_client/model/holdings_sync_status_date_nullable.pyi +54 -0
- snaptrade_client/model/id.py +1 -1
- snaptrade_client/model/id.pyi +1 -1
- snaptrade_client/model/login_redirect_uri.py +3 -3
- snaptrade_client/model/login_redirect_uri.pyi +3 -3
- snaptrade_client/model/manual_trade.py +40 -36
- snaptrade_client/model/manual_trade.pyi +40 -36
- snaptrade_client/model/manual_trade_and_impact.py +6 -7
- snaptrade_client/model/manual_trade_and_impact.pyi +6 -7
- snaptrade_client/model/manual_trade_balance.py +31 -16
- snaptrade_client/model/manual_trade_balance.pyi +31 -16
- snaptrade_client/model/manual_trade_form.py +111 -46
- snaptrade_client/model/manual_trade_form.pyi +111 -46
- snaptrade_client/model/manual_trade_form_bracket.py +237 -0
- snaptrade_client/model/manual_trade_form_bracket.pyi +237 -0
- snaptrade_client/model/manual_trade_form_with_options.py +308 -0
- snaptrade_client/model/manual_trade_form_with_options.pyi +308 -0
- snaptrade_client/model/{trade_impact.py → manual_trade_impact.py} +80 -34
- snaptrade_client/model/{trade_impact.pyi → manual_trade_impact.pyi} +80 -34
- snaptrade_client/model/manual_trade_replace_form.py +215 -0
- snaptrade_client/model/manual_trade_replace_form.pyi +215 -0
- snaptrade_client/model/manual_trade_symbol.py +14 -14
- snaptrade_client/model/manual_trade_symbol.pyi +14 -14
- snaptrade_client/model/mleg_action_strict.py +70 -0
- snaptrade_client/model/mleg_action_strict.pyi +59 -0
- snaptrade_client/model/mleg_instrument_type.py +50 -0
- snaptrade_client/model/{percent.py → mleg_instrument_type.pyi} +14 -8
- snaptrade_client/model/mleg_leg.py +114 -0
- snaptrade_client/model/mleg_leg.pyi +114 -0
- snaptrade_client/model/mleg_order_response.py +120 -0
- snaptrade_client/model/mleg_order_response.pyi +120 -0
- snaptrade_client/model/mleg_order_type_strict.py +60 -0
- snaptrade_client/model/mleg_order_type_strict.pyi +51 -0
- snaptrade_client/model/mleg_price_effect_strict.py +55 -0
- snaptrade_client/model/mleg_price_effect_strict.pyi +47 -0
- snaptrade_client/model/mleg_price_effect_strict_nullable.py +70 -0
- snaptrade_client/model/mleg_price_effect_strict_nullable.pyi +70 -0
- snaptrade_client/model/mleg_trade_form.py +223 -0
- snaptrade_client/model/mleg_trade_form.pyi +223 -0
- snaptrade_client/model/{model_portfolio_security.pyi → mleg_trading_instrument.py} +24 -22
- snaptrade_client/model/mleg_trading_instrument.pyi +98 -0
- snaptrade_client/model/model400_failed_request_response.py +1 -1
- snaptrade_client/model/model400_failed_request_response.pyi +1 -1
- snaptrade_client/model/model401_failed_request_response.py +1 -1
- snaptrade_client/model/model401_failed_request_response.pyi +1 -1
- snaptrade_client/model/model402_brokerage_auth_already_disabled_exception.py +88 -0
- snaptrade_client/model/model402_brokerage_auth_already_disabled_exception.pyi +88 -0
- snaptrade_client/model/model402_brokerage_auth_disabled_response.py +88 -0
- snaptrade_client/model/model402_brokerage_auth_disabled_response.pyi +88 -0
- snaptrade_client/model/model403_failed_request_response.py +1 -1
- snaptrade_client/model/model403_failed_request_response.pyi +1 -1
- snaptrade_client/model/model403_feature_not_enabled_response.py +88 -0
- snaptrade_client/model/model403_feature_not_enabled_response.pyi +88 -0
- snaptrade_client/model/model404_failed_request_response.py +1 -1
- snaptrade_client/model/model404_failed_request_response.pyi +1 -1
- snaptrade_client/model/model425_failed_request_response.py +88 -0
- snaptrade_client/model/model425_failed_request_response.pyi +88 -0
- snaptrade_client/model/model500_unexpected_exception_response.py +98 -0
- snaptrade_client/model/model500_unexpected_exception_response.pyi +98 -0
- snaptrade_client/model/monthly_dividends.py +1 -1
- snaptrade_client/model/monthly_dividends.pyi +1 -1
- snaptrade_client/model/net_contributions.py +1 -1
- snaptrade_client/model/net_contributions.pyi +1 -1
- snaptrade_client/model/net_dividend.py +1 -1
- snaptrade_client/model/net_dividend.pyi +1 -1
- snaptrade_client/model/notional_value.py +68 -0
- snaptrade_client/model/notional_value.pyi +68 -0
- snaptrade_client/model/notional_value_nullable.py +68 -0
- snaptrade_client/model/notional_value_nullable.pyi +68 -0
- snaptrade_client/model/{model_portfolio.pyi → option_brokerage_symbol.py} +26 -36
- snaptrade_client/model/option_brokerage_symbol.pyi +103 -0
- snaptrade_client/model/option_chain.py +8 -343
- snaptrade_client/model/option_chain.pyi +8 -343
- snaptrade_client/model/option_chain_item.py +121 -0
- snaptrade_client/model/option_chain_item.pyi +121 -0
- snaptrade_client/model/option_chain_item_chain_per_root.py +55 -0
- snaptrade_client/model/option_chain_item_chain_per_root.pyi +55 -0
- snaptrade_client/model/option_chain_item_chain_per_root_item.py +101 -0
- snaptrade_client/model/option_chain_item_chain_per_root_item.pyi +101 -0
- snaptrade_client/model/option_chain_item_chain_per_root_item_chain_per_strike_price.py +55 -0
- snaptrade_client/model/option_chain_item_chain_per_root_item_chain_per_strike_price.pyi +55 -0
- snaptrade_client/model/option_chain_item_chain_per_root_item_chain_per_strike_price_item.py +168 -0
- snaptrade_client/model/option_chain_item_chain_per_root_item_chain_per_strike_price_item.pyi +168 -0
- snaptrade_client/model/option_leg.py +1 -1
- snaptrade_client/model/option_leg.pyi +1 -1
- snaptrade_client/model/option_strategy.py +9 -107
- snaptrade_client/model/option_strategy.pyi +9 -107
- snaptrade_client/model/option_strategy_legs.py +130 -0
- snaptrade_client/model/option_strategy_legs.pyi +130 -0
- snaptrade_client/model/option_symbol_id.py +25 -0
- snaptrade_client/model/option_symbol_id.pyi +25 -0
- snaptrade_client/model/options_position.py +43 -44
- snaptrade_client/model/options_position.pyi +43 -44
- snaptrade_client/model/options_symbol.py +66 -71
- snaptrade_client/model/options_symbol.pyi +59 -71
- snaptrade_client/model/options_symbol_nullable.py +170 -0
- snaptrade_client/model/options_symbol_nullable.pyi +163 -0
- snaptrade_client/model/order_type.py +16 -27
- snaptrade_client/model/order_type.pyi +18 -20
- snaptrade_client/model/order_type_strict.py +64 -0
- snaptrade_client/model/order_type_strict.pyi +55 -0
- snaptrade_client/model/{model_portfolio_asset_class.pyi → order_updated_response.py} +24 -24
- snaptrade_client/model/order_updated_response.pyi +96 -0
- snaptrade_client/model/paginated_universal_activity.py +119 -0
- snaptrade_client/model/paginated_universal_activity.pyi +119 -0
- snaptrade_client/model/pagination_details.py +98 -0
- snaptrade_client/model/pagination_details.pyi +98 -0
- snaptrade_client/model/partner_data.py +37 -37
- snaptrade_client/model/partner_data.pyi +37 -37
- snaptrade_client/model/past_value.py +1 -1
- snaptrade_client/model/past_value.pyi +1 -1
- snaptrade_client/model/performance_custom.py +9 -46
- snaptrade_client/model/performance_custom.pyi +9 -46
- snaptrade_client/model/performance_custom_bad_tickers.py +71 -0
- snaptrade_client/model/performance_custom_bad_tickers.pyi +71 -0
- snaptrade_client/model/portfolio_group_id.py +25 -0
- snaptrade_client/model/portfolio_group_id.pyi +25 -0
- snaptrade_client/model/position.py +88 -13
- snaptrade_client/model/position.pyi +88 -13
- snaptrade_client/model/position_symbol.py +15 -15
- snaptrade_client/model/position_symbol.pyi +15 -15
- snaptrade_client/model/price.py +26 -2
- snaptrade_client/model/price.pyi +26 -2
- snaptrade_client/model/rate_of_return_object.py +133 -0
- snaptrade_client/model/rate_of_return_object.pyi +123 -0
- snaptrade_client/model/rate_of_return_response.py +105 -0
- snaptrade_client/model/rate_of_return_response.pyi +105 -0
- snaptrade_client/model/{calculated_trade.py → recent_orders_response.py} +18 -28
- snaptrade_client/model/{calculated_trade.pyi → recent_orders_response.pyi} +18 -28
- snaptrade_client/model/reporting_date.py +1 -1
- snaptrade_client/model/reporting_date.pyi +1 -1
- snaptrade_client/model/reporting_frequency.py +1 -1
- snaptrade_client/model/reporting_frequency.pyi +1 -1
- snaptrade_client/model/security_type.py +2 -2
- snaptrade_client/model/security_type.pyi +2 -2
- snaptrade_client/model/security_type_id.py +25 -0
- snaptrade_client/model/security_type_id.pyi +25 -0
- snaptrade_client/model/session_event.py +47 -7
- snaptrade_client/model/session_event.pyi +37 -5
- snaptrade_client/model/simple_order_form.py +248 -0
- snaptrade_client/model/simple_order_form.pyi +228 -0
- snaptrade_client/model/snap_trade_holdings_account.py +9 -33
- snaptrade_client/model/snap_trade_holdings_account.pyi +9 -33
- snaptrade_client/model/snap_trade_holdings_account_meta.py +56 -0
- snaptrade_client/model/snap_trade_holdings_account_meta.pyi +56 -0
- snaptrade_client/model/snap_trade_holdings_total_value.py +47 -6
- snaptrade_client/model/snap_trade_holdings_total_value.pyi +47 -6
- snaptrade_client/model/snap_trade_login_user_request_body.py +63 -3
- snaptrade_client/model/snap_trade_login_user_request_body.pyi +54 -3
- snaptrade_client/model/snap_trade_register_user_request_body.py +10 -15
- snaptrade_client/model/snap_trade_register_user_request_body.pyi +10 -15
- snaptrade_client/model/status.py +1 -1
- snaptrade_client/model/status.pyi +1 -1
- snaptrade_client/model/{portfolio_group_position.py → stop_loss.py} +22 -37
- snaptrade_client/model/{portfolio_group_position.pyi → stop_loss.pyi} +22 -37
- snaptrade_client/model/strategy_order_record.py +25 -64
- snaptrade_client/model/strategy_order_record.pyi +25 -48
- snaptrade_client/model/strategy_quotes.py +31 -105
- snaptrade_client/model/strategy_quotes.pyi +31 -105
- snaptrade_client/model/strategy_quotes_greek.py +116 -0
- snaptrade_client/model/strategy_quotes_greek.pyi +116 -0
- snaptrade_client/model/sub_period_return_rate.py +1 -1
- snaptrade_client/model/sub_period_return_rate.pyi +1 -1
- snaptrade_client/model/symbol.py +150 -24
- snaptrade_client/model/symbol.pyi +150 -24
- snaptrade_client/model/symbol_nullable.py +281 -0
- snaptrade_client/model/symbol_nullable.pyi +281 -0
- snaptrade_client/model/symbol_query.py +1 -3
- snaptrade_client/model/symbol_query.pyi +1 -3
- snaptrade_client/model/symbols_quotes.py +111 -87
- snaptrade_client/model/symbols_quotes.pyi +111 -87
- snaptrade_client/model/sync_status_date.py +1 -1
- snaptrade_client/model/sync_status_date.pyi +1 -1
- snaptrade_client/model/sync_status_date_nullable.py +54 -0
- snaptrade_client/model/sync_status_date_nullable.pyi +54 -0
- snaptrade_client/model/{jwt.py → take_profit.py} +12 -12
- snaptrade_client/model/{jwt.pyi → take_profit.pyi} +12 -12
- snaptrade_client/model/time.py +1 -1
- snaptrade_client/model/time.pyi +1 -1
- snaptrade_client/model/time_in_force.py +2 -36
- snaptrade_client/model/time_in_force.pyi +2 -28
- snaptrade_client/model/time_in_force_strict.py +65 -0
- snaptrade_client/model/time_in_force_strict.pyi +56 -0
- snaptrade_client/model/{email.py → trade_id.py} +2 -2
- snaptrade_client/model/{email.pyi → trade_id.pyi} +2 -2
- snaptrade_client/model/trading_instrument.py +123 -0
- snaptrade_client/model/{brokerage_authorization_type.pyi → trading_instrument.pyi} +36 -11
- snaptrade_client/model/trading_session.py +53 -0
- snaptrade_client/model/trading_session.pyi +46 -0
- snaptrade_client/model/transactions_status.py +59 -9
- snaptrade_client/model/transactions_status.pyi +59 -9
- snaptrade_client/model/underlying_symbol.py +172 -23
- snaptrade_client/model/underlying_symbol.pyi +172 -23
- snaptrade_client/model/units.py +1 -1
- snaptrade_client/model/units.pyi +1 -1
- snaptrade_client/model/{cash.py → units_nullable.py} +4 -4
- snaptrade_client/model/{cash.pyi → units_nullable.pyi} +4 -4
- snaptrade_client/model/universal_activity.py +168 -73
- snaptrade_client/model/universal_activity.pyi +168 -73
- snaptrade_client/model/universal_symbol.py +171 -50
- snaptrade_client/model/universal_symbol.pyi +171 -50
- snaptrade_client/model/universal_symbol_id.py +25 -0
- snaptrade_client/model/universal_symbol_id.pyi +25 -0
- snaptrade_client/model/universal_symbol_id_nullable.py +54 -0
- snaptrade_client/model/universal_symbol_id_nullable.pyi +54 -0
- snaptrade_client/model/us_exchange.py +1 -1
- snaptrade_client/model/us_exchange.pyi +1 -1
- snaptrade_client/model/user_i_dand_secret.py +8 -9
- snaptrade_client/model/user_i_dand_secret.pyi +8 -9
- snaptrade_client/model/user_id.py +1 -1
- snaptrade_client/model/user_id.pyi +1 -1
- snaptrade_client/model/user_list.py +2 -2
- snaptrade_client/model/user_list.pyi +2 -2
- snaptrade_client/model/user_secret.py +1 -1
- snaptrade_client/model/user_secret.pyi +1 -1
- snaptrade_client/model/validated_trade_body.py +96 -0
- snaptrade_client/model/validated_trade_body.pyi +96 -0
- snaptrade_client/models/__init__.py +104 -43
- snaptrade_client/operation_parameter_map.py +895 -0
- snaptrade_client/paths/__init__.py +34 -44
- snaptrade_client/paths/accounts/get.py +244 -39
- snaptrade_client/paths/accounts/get.pyi +244 -39
- snaptrade_client/paths/accounts_account_id/get.py +284 -73
- snaptrade_client/paths/accounts_account_id/get.pyi +284 -73
- snaptrade_client/paths/accounts_account_id/put.py +285 -49
- snaptrade_client/paths/accounts_account_id/put.pyi +285 -49
- snaptrade_client/paths/{model_portfolio → accounts_account_id_activities}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_activities/get.py +647 -0
- snaptrade_client/paths/accounts_account_id_activities/get.pyi +628 -0
- snaptrade_client/paths/accounts_account_id_balances/get.py +291 -55
- snaptrade_client/paths/accounts_account_id_balances/get.pyi +291 -55
- snaptrade_client/paths/accounts_account_id_holdings/get.py +322 -59
- snaptrade_client/paths/accounts_account_id_holdings/get.pyi +321 -59
- snaptrade_client/paths/accounts_account_id_options/get.py +311 -50
- snaptrade_client/paths/accounts_account_id_options/get.pyi +311 -50
- snaptrade_client/paths/accounts_account_id_options_chain/get.py +298 -56
- snaptrade_client/paths/accounts_account_id_options_chain/get.pyi +298 -56
- snaptrade_client/paths/accounts_account_id_orders/get.py +329 -57
- snaptrade_client/paths/accounts_account_id_orders/get.pyi +325 -57
- snaptrade_client/paths/accounts_account_id_orders_cancel/post.py +356 -74
- snaptrade_client/paths/accounts_account_id_orders_cancel/post.pyi +356 -74
- snaptrade_client/paths/{model_portfolio_model_portfolio_id → accounts_account_id_orders_details}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_orders_details/post.py +691 -0
- snaptrade_client/paths/accounts_account_id_orders_details/post.pyi +678 -0
- snaptrade_client/paths/{portfolio_groups → accounts_account_id_orders_v2}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_orders_v2/get.py +592 -0
- snaptrade_client/paths/accounts_account_id_orders_v2/get.pyi +569 -0
- snaptrade_client/paths/accounts_account_id_positions/get.py +291 -55
- snaptrade_client/paths/accounts_account_id_positions/get.pyi +291 -55
- snaptrade_client/paths/accounts_account_id_quotes/get.py +310 -62
- snaptrade_client/paths/accounts_account_id_quotes/get.pyi +310 -62
- snaptrade_client/paths/accounts_account_id_recent_orders/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_recent_orders/get.py +561 -0
- snaptrade_client/paths/accounts_account_id_recent_orders/get.pyi +549 -0
- snaptrade_client/paths/accounts_account_id_recent_orders_v2/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_recent_orders_v2/get.py +561 -0
- snaptrade_client/paths/accounts_account_id_recent_orders_v2/get.pyi +549 -0
- snaptrade_client/paths/{model_asset_class → accounts_account_id_return_rates}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_return_rates/get.py +540 -0
- snaptrade_client/paths/accounts_account_id_return_rates/get.pyi +528 -0
- snaptrade_client/paths/accounts_account_id_symbols/post.py +338 -71
- snaptrade_client/paths/accounts_account_id_symbols/post.pyi +338 -71
- snaptrade_client/paths/{accounts_account_id_option_strategy → accounts_account_id_trading_bracket}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_trading_bracket/post.py +732 -0
- snaptrade_client/paths/accounts_account_id_trading_bracket/post.pyi +719 -0
- snaptrade_client/paths/accounts_account_id_trading_cancel/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_trading_cancel/post.py +660 -0
- snaptrade_client/paths/accounts_account_id_trading_cancel/post.pyi +648 -0
- snaptrade_client/paths/accounts_account_id_trading_crypto/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_trading_crypto/post.py +700 -0
- snaptrade_client/paths/accounts_account_id_trading_crypto/post.pyi +688 -0
- snaptrade_client/paths/accounts_account_id_trading_crypto_preview/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_trading_crypto_preview/post.py +700 -0
- snaptrade_client/paths/accounts_account_id_trading_crypto_preview/post.pyi +688 -0
- snaptrade_client/paths/{accounts_account_id_option_strategy_option_strategy_id → accounts_account_id_trading_instruments_cryptocurrency_pairs}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_trading_instruments_cryptocurrency_pairs/get.py +653 -0
- snaptrade_client/paths/accounts_account_id_trading_instruments_cryptocurrency_pairs/get.pyi +641 -0
- snaptrade_client/paths/{accounts_account_id_option_strategy_option_strategy_id_execute → accounts_account_id_trading_instruments_cryptocurrency_pairs_instrument_symbol_quote}/__init__.py +2 -2
- snaptrade_client/paths/accounts_account_id_trading_instruments_cryptocurrency_pairs_instrument_symbol_quote/get.py +554 -0
- snaptrade_client/paths/accounts_account_id_trading_instruments_cryptocurrency_pairs_instrument_symbol_quote/get.pyi +542 -0
- snaptrade_client/paths/accounts_account_id_trading_options/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_trading_options/post.py +671 -0
- snaptrade_client/paths/accounts_account_id_trading_options/post.pyi +659 -0
- snaptrade_client/paths/accounts_account_id_trading_replace/__init__.py +7 -0
- snaptrade_client/paths/accounts_account_id_trading_replace/post.py +717 -0
- snaptrade_client/paths/accounts_account_id_trading_replace/post.pyi +704 -0
- snaptrade_client/paths/activities/get.py +316 -62
- snaptrade_client/paths/activities/get.pyi +316 -62
- snaptrade_client/paths/authorizations/get.py +244 -39
- snaptrade_client/paths/authorizations/get.pyi +244 -39
- snaptrade_client/paths/authorizations_authorization_id/delete.py +291 -43
- snaptrade_client/paths/authorizations_authorization_id/delete.pyi +291 -43
- snaptrade_client/paths/authorizations_authorization_id/get.py +285 -49
- snaptrade_client/paths/authorizations_authorization_id/get.pyi +285 -49
- snaptrade_client/paths/{model_asset_class_model_asset_class_id → authorizations_authorization_id_disable}/__init__.py +2 -2
- snaptrade_client/paths/authorizations_authorization_id_disable/post.py +588 -0
- snaptrade_client/paths/authorizations_authorization_id_disable/post.pyi +574 -0
- snaptrade_client/paths/authorizations_authorization_id_refresh/__init__.py +7 -0
- snaptrade_client/paths/authorizations_authorization_id_refresh/post.py +588 -0
- snaptrade_client/paths/authorizations_authorization_id_refresh/post.pyi +574 -0
- snaptrade_client/paths/authorizations_authorization_id_return_rates/__init__.py +7 -0
- snaptrade_client/paths/authorizations_authorization_id_return_rates/get.py +540 -0
- snaptrade_client/paths/authorizations_authorization_id_return_rates/get.pyi +528 -0
- snaptrade_client/paths/brokerage_authorization_types/get.py +232 -33
- snaptrade_client/paths/brokerage_authorization_types/get.pyi +232 -33
- snaptrade_client/paths/brokerages/get.py +188 -21
- snaptrade_client/paths/brokerages/get.pyi +188 -21
- snaptrade_client/paths/{snap_trade_list_user_errors → brokerages_slug_instruments}/__init__.py +2 -2
- snaptrade_client/paths/brokerages_slug_instruments/get.py +417 -0
- snaptrade_client/paths/brokerages_slug_instruments/get.pyi +406 -0
- snaptrade_client/paths/currencies/get.py +188 -21
- snaptrade_client/paths/currencies/get.pyi +188 -21
- snaptrade_client/paths/currencies_rates/get.py +175 -21
- snaptrade_client/paths/currencies_rates/get.pyi +175 -21
- snaptrade_client/paths/currencies_rates_currency_pair/get.py +218 -33
- snaptrade_client/paths/currencies_rates_currency_pair/get.pyi +218 -33
- snaptrade_client/paths/exchanges/get.py +175 -21
- snaptrade_client/paths/exchanges/get.pyi +175 -21
- snaptrade_client/paths/holdings/get.py +297 -55
- snaptrade_client/paths/holdings/get.pyi +296 -55
- snaptrade_client/paths/performance_custom/get.py +306 -67
- snaptrade_client/paths/performance_custom/get.pyi +306 -67
- snaptrade_client/paths/root/get.py +183 -19
- snaptrade_client/paths/root/get.pyi +183 -19
- snaptrade_client/paths/security_types/get.py +188 -21
- snaptrade_client/paths/security_types/get.pyi +188 -21
- snaptrade_client/paths/session_events/get.py +254 -43
- snaptrade_client/paths/session_events/get.pyi +254 -43
- snaptrade_client/paths/snap_trade_delete_user/delete.py +254 -47
- snaptrade_client/paths/snap_trade_delete_user/delete.pyi +254 -47
- snaptrade_client/paths/snap_trade_list_users/get.py +208 -31
- snaptrade_client/paths/snap_trade_list_users/get.pyi +208 -31
- snaptrade_client/paths/snap_trade_login/post.py +391 -93
- snaptrade_client/paths/snap_trade_login/post.pyi +391 -93
- snaptrade_client/paths/snap_trade_partners/get.py +210 -35
- snaptrade_client/paths/snap_trade_partners/get.pyi +210 -35
- snaptrade_client/paths/snap_trade_register_user/post.py +259 -55
- snaptrade_client/paths/snap_trade_register_user/post.pyi +259 -55
- snaptrade_client/paths/{snap_trade_accept_disclaimer → snap_trade_reset_user_secret}/__init__.py +2 -2
- snaptrade_client/paths/snap_trade_reset_user_secret/post.py +459 -0
- snaptrade_client/paths/snap_trade_reset_user_secret/post.pyi +446 -0
- snaptrade_client/paths/symbols/post.py +237 -39
- snaptrade_client/paths/symbols/post.pyi +237 -39
- snaptrade_client/paths/{trade_oco → symbols_query}/__init__.py +2 -2
- snaptrade_client/paths/symbols_query/get.py +441 -0
- snaptrade_client/paths/symbols_query/get.pyi +429 -0
- snaptrade_client/paths/trade_impact/post.py +403 -106
- snaptrade_client/paths/trade_impact/post.pyi +403 -106
- snaptrade_client/paths/trade_place/post.py +429 -108
- snaptrade_client/paths/trade_place/post.pyi +429 -108
- snaptrade_client/paths/trade_trade_id/post.py +358 -54
- snaptrade_client/paths/trade_trade_id/post.pyi +358 -54
- snaptrade_client/pydantic/__init__.py +0 -0
- snaptrade_client/request_before_hook.py +1 -0
- snaptrade_client/request_before_url_hook.py +26 -0
- snaptrade_client/rest.py +10 -3
- snaptrade_client/schemas.py +45 -37
- snaptrade_client/type/__init__.py +0 -0
- snaptrade_client/type/account.py +68 -0
- snaptrade_client/type/account_balance.py +27 -0
- snaptrade_client/type/account_cash_restrictions.py +19 -0
- snaptrade_client/type/account_holdings.py +37 -0
- snaptrade_client/type/account_holdings_account.py +47 -0
- snaptrade_client/type/account_id.py +19 -0
- snaptrade_client/type/account_ids.py +19 -0
- snaptrade_client/type/account_meta.py +19 -0
- snaptrade_client/type/account_order_record.py +94 -0
- snaptrade_client/type/account_order_record_leg.py +48 -0
- snaptrade_client/type/account_order_record_leg_instrument.py +39 -0
- snaptrade_client/type/account_order_record_status.py +19 -0
- snaptrade_client/type/account_order_record_status_v2.py +19 -0
- snaptrade_client/type/account_order_record_status_v2_nullable.py +19 -0
- snaptrade_client/type/account_order_record_v2.py +58 -0
- snaptrade_client/type/account_orders_v2_response.py +28 -0
- snaptrade_client/type/account_simple.py +36 -0
- snaptrade_client/type/account_sync_status.py +30 -0
- snaptrade_client/type/account_universal_activity.py +73 -0
- snaptrade_client/type/action.py +19 -0
- snaptrade_client/type/action_strict.py +19 -0
- snaptrade_client/type/action_strict_v2.py +19 -0
- snaptrade_client/type/action_strict_with_options.py +19 -0
- snaptrade_client/type/balance.py +34 -0
- snaptrade_client/type/brokerage.py +80 -0
- snaptrade_client/type/brokerage_auth_id.py +19 -0
- snaptrade_client/type/brokerage_auth_ids.py +19 -0
- snaptrade_client/type/brokerage_authorization.py +56 -0
- snaptrade_client/type/brokerage_authorization_disabled_confirmation.py +27 -0
- snaptrade_client/type/brokerage_authorization_meta.py +19 -0
- snaptrade_client/type/brokerage_authorization_refresh_confirmation.py +27 -0
- snaptrade_client/type/brokerage_authorization_type_read_only.py +33 -0
- snaptrade_client/type/brokerage_authorization_type_read_only_brokerage.py +32 -0
- snaptrade_client/type/brokerage_exchanges.py +19 -0
- snaptrade_client/type/brokerage_id.py +19 -0
- snaptrade_client/type/brokerage_instrument.py +38 -0
- snaptrade_client/type/brokerage_instruments_response.py +27 -0
- snaptrade_client/type/brokerage_order_id.py +19 -0
- snaptrade_client/type/brokerage_symbol_id.py +19 -0
- snaptrade_client/type/brokerage_type.py +28 -0
- snaptrade_client/type/cancel_order_response.py +29 -0
- snaptrade_client/type/cancel_order_response_raw_response.py +19 -0
- snaptrade_client/type/child_brokerage_order_ids.py +30 -0
- snaptrade_client/type/child_brokerage_order_ids_nullable.py +30 -0
- snaptrade_client/type/client_id.py +19 -0
- snaptrade_client/type/crypto_order_form.py +50 -0
- snaptrade_client/type/crypto_order_preview.py +27 -0
- snaptrade_client/type/crypto_order_preview_estimated_fee.py +29 -0
- snaptrade_client/type/crypto_trading_instrument.py +30 -0
- snaptrade_client/type/cryptocurrency_base_symbol.py +19 -0
- snaptrade_client/type/cryptocurrency_increment.py +19 -0
- snaptrade_client/type/cryptocurrency_increment_nullable.py +19 -0
- snaptrade_client/type/cryptocurrency_pair.py +35 -0
- snaptrade_client/type/cryptocurrency_pair_quote.py +35 -0
- snaptrade_client/type/cryptocurrency_pair_symbol.py +19 -0
- snaptrade_client/type/cryptocurrency_quote_symbol.py +19 -0
- snaptrade_client/type/cryptocurrency_symbol.py +19 -0
- snaptrade_client/type/currency.py +33 -0
- snaptrade_client/type/currency_id.py +19 -0
- snaptrade_client/type/currency_nullable.py +33 -0
- snaptrade_client/type/delete_user_response.py +33 -0
- snaptrade_client/type/dividend_at_date.py +33 -0
- snaptrade_client/type/encrypted_response.py +29 -0
- snaptrade_client/type/encrypted_response_encrypted_message_data.py +30 -0
- snaptrade_client/type/exchange.py +48 -0
- snaptrade_client/type/exchange_id.py +19 -0
- snaptrade_client/type/exchange_rate_pairs.py +31 -0
- snaptrade_client/type/figi_instrument.py +30 -0
- snaptrade_client/type/figi_instrument_nullable.py +30 -0
- snaptrade_client/type/holdings_status.py +30 -0
- snaptrade_client/type/holdings_sync_status_date.py +19 -0
- snaptrade_client/type/holdings_sync_status_date_nullable.py +19 -0
- snaptrade_client/type/id.py +19 -0
- snaptrade_client/type/login_redirect_uri.py +30 -0
- snaptrade_client/type/manual_trade.py +48 -0
- snaptrade_client/type/manual_trade_and_impact.py +34 -0
- snaptrade_client/type/manual_trade_balance.py +33 -0
- snaptrade_client/type/manual_trade_form.py +50 -0
- snaptrade_client/type/manual_trade_form_bracket.py +50 -0
- snaptrade_client/type/manual_trade_form_with_options.py +57 -0
- snaptrade_client/type/manual_trade_impact.py +39 -0
- snaptrade_client/type/manual_trade_replace_form.py +47 -0
- snaptrade_client/type/manual_trade_symbol.py +46 -0
- snaptrade_client/type/mleg_action_strict.py +19 -0
- snaptrade_client/type/mleg_instrument_type.py +19 -0
- snaptrade_client/type/mleg_leg.py +33 -0
- snaptrade_client/type/mleg_order_response.py +30 -0
- snaptrade_client/type/mleg_order_type_strict.py +19 -0
- snaptrade_client/type/mleg_price_effect_strict.py +19 -0
- snaptrade_client/type/mleg_price_effect_strict_nullable.py +19 -0
- snaptrade_client/type/mleg_trade_form.py +41 -0
- snaptrade_client/type/mleg_trading_instrument.py +30 -0
- snaptrade_client/type/model400_failed_request_response.py +28 -0
- snaptrade_client/type/model401_failed_request_response.py +28 -0
- snaptrade_client/type/model402_brokerage_auth_already_disabled_exception.py +28 -0
- snaptrade_client/type/model402_brokerage_auth_disabled_response.py +28 -0
- snaptrade_client/type/model403_failed_request_response.py +28 -0
- snaptrade_client/type/model403_feature_not_enabled_response.py +28 -0
- snaptrade_client/type/model404_failed_request_response.py +28 -0
- snaptrade_client/type/model425_failed_request_response.py +28 -0
- snaptrade_client/type/model500_unexpected_exception_response.py +30 -0
- snaptrade_client/type/monthly_dividends.py +30 -0
- snaptrade_client/type/net_contributions.py +31 -0
- snaptrade_client/type/net_dividend.py +31 -0
- snaptrade_client/type/notional_value.py +19 -0
- snaptrade_client/type/notional_value_nullable.py +19 -0
- snaptrade_client/type/option_brokerage_symbol.py +35 -0
- snaptrade_client/type/option_chain.py +20 -0
- snaptrade_client/type/option_chain_item.py +35 -0
- snaptrade_client/type/option_chain_item_chain_per_root.py +20 -0
- snaptrade_client/type/option_chain_item_chain_per_root_item.py +31 -0
- snaptrade_client/type/option_chain_item_chain_per_root_item_chain_per_strike_price.py +20 -0
- snaptrade_client/type/option_chain_item_chain_per_root_item_chain_per_strike_price_item.py +30 -0
- snaptrade_client/type/option_leg.py +31 -0
- snaptrade_client/type/option_strategy.py +36 -0
- snaptrade_client/type/option_strategy_legs.py +19 -0
- snaptrade_client/type/option_symbol_id.py +19 -0
- snaptrade_client/type/options_position.py +39 -0
- snaptrade_client/type/options_symbol.py +44 -0
- snaptrade_client/type/options_symbol_nullable.py +44 -0
- snaptrade_client/type/order_type.py +19 -0
- snaptrade_client/type/order_type_strict.py +19 -0
- snaptrade_client/type/order_updated_response.py +29 -0
- snaptrade_client/type/paginated_universal_activity.py +30 -0
- snaptrade_client/type/pagination_details.py +33 -0
- snaptrade_client/type/partner_data.py +62 -0
- snaptrade_client/type/past_value.py +31 -0
- snaptrade_client/type/performance_custom.py +78 -0
- snaptrade_client/type/performance_custom_bad_tickers.py +19 -0
- snaptrade_client/type/portfolio_group_id.py +19 -0
- snaptrade_client/type/position.py +50 -0
- snaptrade_client/type/position_symbol.py +47 -0
- snaptrade_client/type/price.py +19 -0
- snaptrade_client/type/rate_of_return_object.py +33 -0
- snaptrade_client/type/rate_of_return_response.py +28 -0
- snaptrade_client/type/recent_orders_response.py +28 -0
- snaptrade_client/type/reporting_date.py +19 -0
- snaptrade_client/type/reporting_frequency.py +19 -0
- snaptrade_client/type/security_type.py +37 -0
- snaptrade_client/type/security_type_id.py +19 -0
- snaptrade_client/type/session_event.py +40 -0
- snaptrade_client/type/simple_order_form.py +50 -0
- snaptrade_client/type/snap_trade_holdings_account.py +43 -0
- snaptrade_client/type/snap_trade_holdings_account_meta.py +19 -0
- snaptrade_client/type/snap_trade_holdings_total_value.py +30 -0
- snaptrade_client/type/snap_trade_login_user_request_body.py +48 -0
- snaptrade_client/type/snap_trade_register_user_request_body.py +27 -0
- snaptrade_client/type/status.py +30 -0
- snaptrade_client/type/stop_loss.py +28 -0
- snaptrade_client/type/strategy_order_record.py +52 -0
- snaptrade_client/type/strategy_quotes.py +39 -0
- snaptrade_client/type/strategy_quotes_greek.py +34 -0
- snaptrade_client/type/sub_period_return_rate.py +33 -0
- snaptrade_client/type/symbol.py +53 -0
- snaptrade_client/type/symbol_nullable.py +53 -0
- snaptrade_client/type/symbol_query.py +27 -0
- snaptrade_client/type/symbols_quotes.py +20 -0
- snaptrade_client/type/sync_status_date.py +19 -0
- snaptrade_client/type/sync_status_date_nullable.py +19 -0
- snaptrade_client/type/take_profit.py +26 -0
- snaptrade_client/type/time.py +19 -0
- snaptrade_client/type/time_in_force.py +19 -0
- snaptrade_client/type/time_in_force_strict.py +19 -0
- snaptrade_client/type/trade_id.py +19 -0
- snaptrade_client/type/trading_instrument.py +30 -0
- snaptrade_client/type/trading_session.py +19 -0
- snaptrade_client/type/transactions_status.py +34 -0
- snaptrade_client/type/underlying_symbol.py +58 -0
- snaptrade_client/type/units.py +19 -0
- snaptrade_client/type/units_nullable.py +19 -0
- snaptrade_client/type/universal_activity.py +76 -0
- snaptrade_client/type/universal_symbol.py +56 -0
- snaptrade_client/type/universal_symbol_id.py +19 -0
- snaptrade_client/type/universal_symbol_id_nullable.py +19 -0
- snaptrade_client/type/us_exchange.py +42 -0
- snaptrade_client/type/user_i_dand_secret.py +30 -0
- snaptrade_client/type/user_id.py +19 -0
- snaptrade_client/type/user_list.py +19 -0
- snaptrade_client/type/user_secret.py +19 -0
- snaptrade_client/type/validated_trade_body.py +27 -0
- snaptrade_client/type_util.py +23 -0
- {snaptrade_python_sdk-10.9.0.dist-info → snaptrade_python_sdk-11.0.152.dist-info}/LICENSE +1 -1
- snaptrade_python_sdk-11.0.152.dist-info/METADATA +2683 -0
- snaptrade_python_sdk-11.0.152.dist-info/RECORD +809 -0
- {snaptrade_python_sdk-10.9.0.dist-info → snaptrade_python_sdk-11.0.152.dist-info}/WHEEL +1 -1
- snaptrade_client/apis/paths/accounts_account_id_option_strategy.py +0 -7
- snaptrade_client/apis/paths/accounts_account_id_option_strategy_option_strategy_id.py +0 -7
- snaptrade_client/apis/paths/accounts_account_id_option_strategy_option_strategy_id_execute.py +0 -7
- snaptrade_client/apis/paths/model_asset_class.py +0 -9
- snaptrade_client/apis/paths/model_asset_class_model_asset_class_id.py +0 -11
- snaptrade_client/apis/paths/model_portfolio.py +0 -9
- snaptrade_client/apis/paths/model_portfolio_model_portfolio_id.py +0 -11
- snaptrade_client/apis/paths/portfolio_groups.py +0 -9
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id.py +0 -11
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_accounts.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_balances.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_calculatedtrades.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_impact.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_modify_trade_id.py +0 -9
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_place_orders.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_trade_id.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_excludedassets.py +0 -9
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_excludedassets_symbol_id.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_import.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_info.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_positions.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_settings.py +0 -9
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_symbols.py +0 -7
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_targets.py +0 -9
- snaptrade_client/apis/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id.py +0 -11
- snaptrade_client/apis/paths/snap_trade_accept_disclaimer.py +0 -7
- snaptrade_client/apis/paths/snap_trade_encrypted_jwt.py +0 -7
- snaptrade_client/apis/paths/snap_trade_list_user_errors.py +0 -7
- snaptrade_client/apis/paths/symbols_ticker.py +0 -7
- snaptrade_client/apis/paths/trade_oco.py +0 -7
- snaptrade_client/apis/tags/portfolio_management_api.py +0 -86
- snaptrade_client/model/cash_restriction.py +0 -138
- snaptrade_client/model/cash_restriction.pyi +0 -131
- snaptrade_client/model/model_asset_class_details.py +0 -118
- snaptrade_client/model/model_asset_class_details.pyi +0 -118
- snaptrade_client/model/model_portfolio.py +0 -121
- snaptrade_client/model/model_portfolio_details.py +0 -154
- snaptrade_client/model/model_portfolio_details.pyi +0 -154
- snaptrade_client/model/options_holdings.py +0 -156
- snaptrade_client/model/options_holdings.pyi +0 -156
- snaptrade_client/model/portfolio_group_info.py +0 -415
- snaptrade_client/model/portfolio_group_info.pyi +0 -415
- snaptrade_client/model/portfolio_group_settings.py +0 -125
- snaptrade_client/model/portfolio_group_settings.pyi +0 -125
- snaptrade_client/model/rsa_public_key.py +0 -25
- snaptrade_client/model/rsa_public_key.pyi +0 -25
- snaptrade_client/model/signed_content.py +0 -25
- snaptrade_client/model/signed_content.pyi +0 -25
- snaptrade_client/model/snap_trade_holdings_account_account_id.py +0 -232
- snaptrade_client/model/snap_trade_holdings_account_account_id.pyi +0 -232
- snaptrade_client/model/snap_trade_user_id.py +0 -25
- snaptrade_client/model/snap_trade_user_id.pyi +0 -25
- snaptrade_client/model/snap_trade_user_secret.py +0 -25
- snaptrade_client/model/snap_trade_user_secret.pyi +0 -25
- snaptrade_client/model/strategy_impact.py +0 -308
- snaptrade_client/model/strategy_impact.pyi +0 -308
- snaptrade_client/model/strategy_order_place.py +0 -708
- snaptrade_client/model/strategy_order_place.pyi +0 -708
- snaptrade_client/model/strategy_order_quotes.py +0 -25
- snaptrade_client/model/strategy_order_quotes.pyi +0 -25
- snaptrade_client/model/target_asset.py +0 -170
- snaptrade_client/model/target_asset.pyi +0 -170
- snaptrade_client/model/timestamp.py +0 -25
- snaptrade_client/model/timestamp.pyi +0 -25
- snaptrade_client/model/trade.py +0 -182
- snaptrade_client/model/trade.pyi +0 -175
- snaptrade_client/model/trade_execution_status.py +0 -254
- snaptrade_client/model/trade_execution_status.pyi +0 -237
- snaptrade_client/model/universal_symbol_ticker.py +0 -186
- snaptrade_client/model/universal_symbol_ticker.pyi +0 -186
- snaptrade_client/model/user_error_log.py +0 -128
- snaptrade_client/model/user_error_log.pyi +0 -128
- snaptrade_client/model/user_settings.py +0 -173
- snaptrade_client/model/user_settings.pyi +0 -173
- snaptrade_client/paths/accounts_account_id_option_strategy/post.py +0 -452
- snaptrade_client/paths/accounts_account_id_option_strategy/post.pyi +0 -435
- snaptrade_client/paths/accounts_account_id_option_strategy_option_strategy_id/get.py +0 -295
- snaptrade_client/paths/accounts_account_id_option_strategy_option_strategy_id/get.pyi +0 -284
- snaptrade_client/paths/accounts_account_id_option_strategy_option_strategy_id_execute/post.py +0 -476
- snaptrade_client/paths/accounts_account_id_option_strategy_option_strategy_id_execute/post.pyi +0 -449
- snaptrade_client/paths/model_asset_class/get.py +0 -174
- snaptrade_client/paths/model_asset_class/get.pyi +0 -164
- snaptrade_client/paths/model_asset_class/post.py +0 -149
- snaptrade_client/paths/model_asset_class/post.pyi +0 -139
- snaptrade_client/paths/model_asset_class_model_asset_class_id/delete.py +0 -180
- snaptrade_client/paths/model_asset_class_model_asset_class_id/delete.pyi +0 -170
- snaptrade_client/paths/model_asset_class_model_asset_class_id/get.py +0 -200
- snaptrade_client/paths/model_asset_class_model_asset_class_id/get.pyi +0 -190
- snaptrade_client/paths/model_asset_class_model_asset_class_id/post.py +0 -233
- snaptrade_client/paths/model_asset_class_model_asset_class_id/post.pyi +0 -223
- snaptrade_client/paths/model_portfolio/get.py +0 -174
- snaptrade_client/paths/model_portfolio/get.pyi +0 -164
- snaptrade_client/paths/model_portfolio/post.py +0 -149
- snaptrade_client/paths/model_portfolio/post.pyi +0 -139
- snaptrade_client/paths/model_portfolio_model_portfolio_id/delete.py +0 -180
- snaptrade_client/paths/model_portfolio_model_portfolio_id/delete.pyi +0 -170
- snaptrade_client/paths/model_portfolio_model_portfolio_id/get.py +0 -200
- snaptrade_client/paths/model_portfolio_model_portfolio_id/get.pyi +0 -190
- snaptrade_client/paths/model_portfolio_model_portfolio_id/post.py +0 -239
- snaptrade_client/paths/model_portfolio_model_portfolio_id/post.pyi +0 -229
- snaptrade_client/paths/portfolio_groups/get.py +0 -262
- snaptrade_client/paths/portfolio_groups/get.pyi +0 -251
- snaptrade_client/paths/portfolio_groups/post.py +0 -320
- snaptrade_client/paths/portfolio_groups/post.pyi +0 -308
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/delete.py +0 -241
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/delete.pyi +0 -228
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/get.py +0 -219
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/get.pyi +0 -208
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/patch.py +0 -288
- snaptrade_client/paths/portfolio_groups_portfolio_group_id/patch.pyi +0 -275
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_accounts/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_accounts/get.py +0 -244
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_accounts/get.pyi +0 -233
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_balances/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_balances/get.py +0 -266
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_balances/get.pyi +0 -253
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades/get.py +0 -200
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades/get.pyi +0 -190
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_impact/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_impact/get.py +0 -240
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_impact/get.pyi +0 -230
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_modify_trade_id/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_modify_trade_id/get.py +0 -230
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_modify_trade_id/get.pyi +0 -220
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_modify_trade_id/patch.py +0 -310
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_modify_trade_id/patch.pyi +0 -300
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_place_orders/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_place_orders/post.py +0 -240
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_place_orders/post.pyi +0 -230
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_trade_id/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_trade_id/get.py +0 -255
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_calculatedtrades_calculated_trade_id_trade_id/get.pyi +0 -245
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets/get.py +0 -244
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets/get.pyi +0 -233
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets/post.py +0 -281
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets/post.pyi +0 -271
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets_symbol_id/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets_symbol_id/delete.py +0 -195
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_excludedassets_symbol_id/delete.pyi +0 -185
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_import/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_import/post.py +0 -244
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_import/post.pyi +0 -233
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_info/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_info/get.py +0 -219
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_info/get.pyi +0 -208
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_positions/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_positions/get.py +0 -266
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_positions/get.pyi +0 -253
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_settings/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_settings/get.py +0 -219
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_settings/get.pyi +0 -208
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_settings/patch.py +0 -219
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_settings/patch.pyi +0 -208
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_symbols/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_symbols/post.py +0 -283
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_symbols/post.pyi +0 -272
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets/get.py +0 -266
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets/get.pyi +0 -253
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets/post.py +0 -273
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets/post.pyi +0 -260
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/__init__.py +0 -7
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/delete.py +0 -256
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/delete.pyi +0 -243
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/get.py +0 -234
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/get.pyi +0 -223
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/patch.py +0 -321
- snaptrade_client/paths/portfolio_groups_portfolio_group_id_targets_target_asset_id/patch.pyi +0 -308
- snaptrade_client/paths/snap_trade_accept_disclaimer/post.py +0 -319
- snaptrade_client/paths/snap_trade_accept_disclaimer/post.pyi +0 -308
- snaptrade_client/paths/snap_trade_encrypted_jwt/__init__.py +0 -7
- snaptrade_client/paths/snap_trade_encrypted_jwt/get.py +0 -286
- snaptrade_client/paths/snap_trade_encrypted_jwt/get.pyi +0 -272
- snaptrade_client/paths/snap_trade_list_user_errors/get.py +0 -243
- snaptrade_client/paths/snap_trade_list_user_errors/get.pyi +0 -233
- snaptrade_client/paths/symbols_ticker/__init__.py +0 -7
- snaptrade_client/paths/symbols_ticker/get.py +0 -282
- snaptrade_client/paths/symbols_ticker/get.pyi +0 -270
- snaptrade_client/paths/trade_oco/post.py +0 -354
- snaptrade_client/paths/trade_oco/post.pyi +0 -342
- snaptrade_python_sdk-10.9.0.dist-info/METADATA +0 -314
- snaptrade_python_sdk-10.9.0.dist-info/RECORD +0 -563
snaptrade_client/__init__.py
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
The version of the OpenAPI document: 1.0.0
|
|
11
11
|
Contact: api@snaptrade.com
|
|
12
|
-
|
|
12
|
+
Created by: https://snaptrade.com/
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
__version__ = "
|
|
15
|
+
__version__ = "11.0.152"
|
|
16
16
|
|
|
17
17
|
# import ApiClient
|
|
18
18
|
from snaptrade_client.api_client import ApiClient
|
snaptrade_client/api_client.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
The version of the OpenAPI document: 1.0.0
|
|
8
8
|
Contact: api@snaptrade.com
|
|
9
|
-
|
|
9
|
+
Created by: https://snaptrade.com/
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
from dataclasses import dataclass
|
|
@@ -20,23 +20,27 @@ import atexit
|
|
|
20
20
|
from multiprocessing.pool import ThreadPool
|
|
21
21
|
import re
|
|
22
22
|
import tempfile
|
|
23
|
+
import time
|
|
23
24
|
import typing
|
|
24
25
|
import typing_extensions
|
|
26
|
+
import aiohttp
|
|
25
27
|
import urllib3
|
|
26
28
|
from urllib3._collections import HTTPHeaderDict
|
|
27
29
|
from urllib.parse import urlparse, quote
|
|
28
30
|
from urllib3.fields import RequestField as RequestFieldBase
|
|
29
31
|
from urllib3.fields import guess_content_type
|
|
32
|
+
from dateutil import parser
|
|
33
|
+
from datetime import datetime as dt
|
|
30
34
|
|
|
31
35
|
import frozendict
|
|
32
36
|
|
|
33
37
|
from snaptrade_client import rest
|
|
34
|
-
from snaptrade_client.api_response import ApiResponse
|
|
35
|
-
from snaptrade_client.rest import ResponseWrapper
|
|
38
|
+
from snaptrade_client.api_response import ApiResponse, AsyncApiResponse
|
|
39
|
+
from snaptrade_client.rest import AsyncResponseWrapper, ResponseWrapper
|
|
36
40
|
from snaptrade_client.configuration import Configuration
|
|
37
41
|
from snaptrade_client.exceptions import ApiTypeError, ApiValueError, MissingRequiredParametersError
|
|
38
42
|
from snaptrade_client.request_after_hook import request_after_hook
|
|
39
|
-
from snaptrade_client.
|
|
43
|
+
from snaptrade_client.request_before_url_hook import request_before_url_hook
|
|
40
44
|
from snaptrade_client.schemas import (
|
|
41
45
|
NoneClass,
|
|
42
46
|
BoolClass,
|
|
@@ -51,6 +55,14 @@ from snaptrade_client.schemas import (
|
|
|
51
55
|
)
|
|
52
56
|
|
|
53
57
|
|
|
58
|
+
@dataclass
|
|
59
|
+
class MappedArgs:
|
|
60
|
+
body: typing.Any = None
|
|
61
|
+
query: typing.Optional[dict] = None
|
|
62
|
+
path: typing.Optional[dict] = None
|
|
63
|
+
header: typing.Optional[dict] = None
|
|
64
|
+
cookie: typing.Optional[dict] = None
|
|
65
|
+
|
|
54
66
|
class RequestField(RequestFieldBase):
|
|
55
67
|
def __eq__(self, other):
|
|
56
68
|
if not isinstance(other, RequestField):
|
|
@@ -58,6 +70,24 @@ class RequestField(RequestFieldBase):
|
|
|
58
70
|
return self.__dict__ == other.__dict__
|
|
59
71
|
|
|
60
72
|
|
|
73
|
+
def DeprecationWarningOnce(func=None, *, prefix=None):
|
|
74
|
+
def decorator(func):
|
|
75
|
+
warned = False
|
|
76
|
+
def wrapper(instance, *args, **kwargs):
|
|
77
|
+
nonlocal warned
|
|
78
|
+
if not warned:
|
|
79
|
+
msg = f"{func.__name__} is deprecated"
|
|
80
|
+
if prefix:
|
|
81
|
+
msg = f"{prefix}.{msg}"
|
|
82
|
+
instance.api_client.configuration.logger.warning(msg)
|
|
83
|
+
warned = True
|
|
84
|
+
return func(instance, *args, **kwargs)
|
|
85
|
+
return wrapper
|
|
86
|
+
if func is None:
|
|
87
|
+
return decorator
|
|
88
|
+
else:
|
|
89
|
+
return decorator(func)
|
|
90
|
+
|
|
61
91
|
class JSONEncoder(json.JSONEncoder):
|
|
62
92
|
compact_separators = (',', ':')
|
|
63
93
|
|
|
@@ -829,8 +859,11 @@ class MediaType:
|
|
|
829
859
|
|
|
830
860
|
@dataclass
|
|
831
861
|
class ApiResponseWithoutDeserialization(ApiResponse):
|
|
832
|
-
|
|
833
|
-
|
|
862
|
+
pass
|
|
863
|
+
|
|
864
|
+
@dataclass
|
|
865
|
+
class ApiResponseWithoutDeserializationAsync(AsyncApiResponse):
|
|
866
|
+
pass
|
|
834
867
|
|
|
835
868
|
|
|
836
869
|
class OpenApiResponse(JSONDetector):
|
|
@@ -839,6 +872,7 @@ class OpenApiResponse(JSONDetector):
|
|
|
839
872
|
def __init__(
|
|
840
873
|
self,
|
|
841
874
|
response_cls: typing.Type[ApiResponse] = ApiResponse,
|
|
875
|
+
response_cls_async: typing.Type[AsyncApiResponse] = AsyncApiResponse,
|
|
842
876
|
content: typing.Optional[typing.Dict[str, MediaType]] = None,
|
|
843
877
|
headers: typing.Optional[typing.List[HeaderParameter]] = None,
|
|
844
878
|
):
|
|
@@ -847,11 +881,12 @@ class OpenApiResponse(JSONDetector):
|
|
|
847
881
|
raise ValueError('Invalid value for content, the content dict must have >= 1 entry')
|
|
848
882
|
self.content = content
|
|
849
883
|
self.response_cls = response_cls
|
|
884
|
+
self.response_cls_async = response_cls_async
|
|
850
885
|
|
|
851
886
|
@staticmethod
|
|
852
|
-
def __deserialize_json(response:
|
|
887
|
+
def __deserialize_json(response: bytes) -> typing.Any:
|
|
853
888
|
# python must be >= 3.9 so we can pass in bytes into json.loads
|
|
854
|
-
return json.loads(response
|
|
889
|
+
return json.loads(response)
|
|
855
890
|
|
|
856
891
|
@staticmethod
|
|
857
892
|
def __file_name_from_response_url(response_url: typing.Optional[str]) -> typing.Optional[str]:
|
|
@@ -911,9 +946,9 @@ class OpenApiResponse(JSONDetector):
|
|
|
911
946
|
|
|
912
947
|
@staticmethod
|
|
913
948
|
def __deserialize_multipart_form_data(
|
|
914
|
-
response:
|
|
949
|
+
response: bytes
|
|
915
950
|
) -> typing.Dict[str, typing.Any]:
|
|
916
|
-
msg = email.message_from_bytes(response
|
|
951
|
+
msg = email.message_from_bytes(response)
|
|
917
952
|
return {
|
|
918
953
|
part.get_param("name", header="Content-Disposition"): part.get_payload(
|
|
919
954
|
decode=True
|
|
@@ -965,20 +1000,16 @@ class OpenApiResponse(JSONDetector):
|
|
|
965
1000
|
|
|
966
1001
|
return None
|
|
967
1002
|
|
|
968
|
-
def
|
|
969
|
-
|
|
1003
|
+
async def deserialize_async(self, response: AsyncResponseWrapper, configuration: Configuration, skip_deserialization = False) -> AsyncApiResponse:
|
|
1004
|
+
"""
|
|
1005
|
+
Deserializes an HTTP response body into an object.
|
|
1006
|
+
"""
|
|
1007
|
+
content_type = response.http_response.content_type
|
|
970
1008
|
deserialized_body = unset
|
|
971
|
-
streamed = response.http_response.supports_chunked_reads()
|
|
972
|
-
|
|
973
|
-
deserialized_headers = unset
|
|
974
|
-
if self.headers is not None:
|
|
975
|
-
# TODO add header deserialiation here
|
|
976
|
-
pass
|
|
977
|
-
|
|
978
1009
|
if self.content is not None:
|
|
979
1010
|
if len(self.content) == 0:
|
|
980
1011
|
# some specs do not define response content media type schemas
|
|
981
|
-
return self.
|
|
1012
|
+
return self.response_cls_async(
|
|
982
1013
|
round_trip_time=response.round_trip_time,
|
|
983
1014
|
response=response.http_response,
|
|
984
1015
|
body=unset,
|
|
@@ -991,25 +1022,20 @@ class OpenApiResponse(JSONDetector):
|
|
|
991
1022
|
f"Invalid content_type returned. Content_type='{content_type}' was returned "
|
|
992
1023
|
f"when only {str(set(self.content))} are defined for status_code={str(response.http_response.status)}"
|
|
993
1024
|
)
|
|
994
|
-
|
|
995
1025
|
if self._content_type_is_json(content_type):
|
|
996
|
-
body_data = self.__deserialize_json(response.http_response)
|
|
997
|
-
elif content_type == 'application/octet-stream':
|
|
998
|
-
body_data = self.__deserialize_application_octet_stream(response.http_response)
|
|
1026
|
+
body_data = self.__deserialize_json(await response.http_response.read())
|
|
999
1027
|
elif content_type.startswith('multipart/form-data'):
|
|
1000
|
-
body_data = self.__deserialize_multipart_form_data(response.http_response)
|
|
1001
|
-
content_type = 'multipart/form-data'
|
|
1028
|
+
body_data = self.__deserialize_multipart_form_data(await response.http_response.read())
|
|
1002
1029
|
else:
|
|
1003
1030
|
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
|
|
1004
1031
|
if skip_deserialization:
|
|
1005
|
-
return self.
|
|
1032
|
+
return self.response_cls_async(
|
|
1006
1033
|
round_trip_time=response.round_trip_time,
|
|
1007
1034
|
response=response.http_response,
|
|
1008
1035
|
body=body_data,
|
|
1009
1036
|
headers=response.http_response.headers,
|
|
1010
1037
|
status=response.http_response.status
|
|
1011
1038
|
)
|
|
1012
|
-
|
|
1013
1039
|
# Execute validation and throw as a side effect if validation fails
|
|
1014
1040
|
body_schema.from_openapi_data_oapg(
|
|
1015
1041
|
body_data,
|
|
@@ -1017,7 +1043,66 @@ class OpenApiResponse(JSONDetector):
|
|
|
1017
1043
|
)
|
|
1018
1044
|
# Validation passed, set deserialized_body to plain old deserialized data
|
|
1019
1045
|
deserialized_body = body_data
|
|
1020
|
-
|
|
1046
|
+
|
|
1047
|
+
return self.response_cls_async(
|
|
1048
|
+
round_trip_time=response.round_trip_time,
|
|
1049
|
+
response=response.http_response,
|
|
1050
|
+
body=deserialized_body,
|
|
1051
|
+
headers=response.http_response.headers,
|
|
1052
|
+
status=response.http_response.status
|
|
1053
|
+
)
|
|
1054
|
+
|
|
1055
|
+
def deserialize_body(self, response: ResponseWrapper, content_type: str) -> (any, str):
|
|
1056
|
+
if self._content_type_is_json(content_type):
|
|
1057
|
+
deserialized_body = self.__deserialize_json(response.http_response.data)
|
|
1058
|
+
elif content_type == 'application/octet-stream':
|
|
1059
|
+
deserialized_body = self.__deserialize_application_octet_stream(response.http_response)
|
|
1060
|
+
elif content_type.startswith('multipart/form-data'):
|
|
1061
|
+
deserialized_body = self.__deserialize_multipart_form_data(response.http_response.data)
|
|
1062
|
+
content_type = 'multipart/form-data'
|
|
1063
|
+
else: # If we don't know how to deserialize, use raw body string
|
|
1064
|
+
deserialized_body = response.http_response.data.decode()
|
|
1065
|
+
return deserialized_body, content_type
|
|
1066
|
+
|
|
1067
|
+
def deserialize(self, response: ResponseWrapper, configuration: Configuration, skip_deserialization = False) -> ApiResponse:
|
|
1068
|
+
content_type = response.http_response.headers.get('content-type')
|
|
1069
|
+
streamed = response.http_response.supports_chunked_reads()
|
|
1070
|
+
|
|
1071
|
+
deserialized_headers = unset
|
|
1072
|
+
if self.headers is not None:
|
|
1073
|
+
# TODO add header deserialization here
|
|
1074
|
+
pass
|
|
1075
|
+
|
|
1076
|
+
if self.content is not None and len(self.content) == 0:
|
|
1077
|
+
# some specs do not define response content media type schemas
|
|
1078
|
+
return self.response_cls(
|
|
1079
|
+
round_trip_time=response.round_trip_time,
|
|
1080
|
+
response=response.http_response,
|
|
1081
|
+
body=unset,
|
|
1082
|
+
headers=response.http_response.headers,
|
|
1083
|
+
status=response.http_response.status
|
|
1084
|
+
)
|
|
1085
|
+
|
|
1086
|
+
try:
|
|
1087
|
+
deserialized_body, content_type = self.deserialize_body(response, content_type)
|
|
1088
|
+
except Exception:
|
|
1089
|
+
# Most likely content-type did not match actual body
|
|
1090
|
+
deserialized_body = unset
|
|
1091
|
+
|
|
1092
|
+
if not skip_deserialization:
|
|
1093
|
+
body_schema = self.__get_schema_for_content_type(content_type)
|
|
1094
|
+
if body_schema is None:
|
|
1095
|
+
raise ApiValueError(
|
|
1096
|
+
f"Invalid content_type returned. Content_type='{content_type}' was returned "
|
|
1097
|
+
f"when only {str(set(self.content))} are defined for status_code={str(response.http_response.status)}"
|
|
1098
|
+
)
|
|
1099
|
+
# Execute validation and throw as a side effect if validation fails
|
|
1100
|
+
body_schema.from_openapi_data_oapg(
|
|
1101
|
+
body_data,
|
|
1102
|
+
_configuration=configuration
|
|
1103
|
+
)
|
|
1104
|
+
|
|
1105
|
+
if streamed:
|
|
1021
1106
|
response.http_response.release_conn()
|
|
1022
1107
|
|
|
1023
1108
|
return self.response_cls(
|
|
@@ -1070,7 +1155,7 @@ class ApiClient:
|
|
|
1070
1155
|
self.default_headers[header_name] = header_value
|
|
1071
1156
|
self.cookie = cookie
|
|
1072
1157
|
# Set default User-Agent.
|
|
1073
|
-
self.user_agent = 'Konfig/
|
|
1158
|
+
self.user_agent = 'Konfig/11.0.152/python'
|
|
1074
1159
|
|
|
1075
1160
|
def __enter__(self):
|
|
1076
1161
|
return self
|
|
@@ -1108,7 +1193,7 @@ class ApiClient:
|
|
|
1108
1193
|
def set_default_header(self, header_name, header_value):
|
|
1109
1194
|
self.default_headers[header_name] = header_value
|
|
1110
1195
|
|
|
1111
|
-
def
|
|
1196
|
+
async def __async_call_api(
|
|
1112
1197
|
self,
|
|
1113
1198
|
resource_path: str,
|
|
1114
1199
|
method: str,
|
|
@@ -1118,49 +1203,126 @@ class ApiClient:
|
|
|
1118
1203
|
fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]] = None,
|
|
1119
1204
|
auth_settings: typing.Optional[typing.List[str]] = None,
|
|
1120
1205
|
stream: bool = False,
|
|
1121
|
-
timeout: typing.Optional[typing.Union[
|
|
1206
|
+
timeout: typing.Optional[typing.Union[float, typing.Tuple]] = None,
|
|
1122
1207
|
host: typing.Optional[str] = None,
|
|
1123
1208
|
prefix_separator_iterator: PrefixSeparatorIterator = None,
|
|
1124
|
-
|
|
1209
|
+
**kwargs
|
|
1210
|
+
) -> AsyncResponseWrapper:
|
|
1125
1211
|
|
|
1126
|
-
|
|
1127
|
-
|
|
1212
|
+
# header parameters
|
|
1213
|
+
used_headers = HTTPHeaderDict(self.default_headers)
|
|
1214
|
+
if self.cookie:
|
|
1215
|
+
headers['Cookie'] = self.cookie
|
|
1216
|
+
|
|
1217
|
+
# auth setting
|
|
1218
|
+
resource_path_ref = [self.update_params_for_auth(
|
|
1219
|
+
used_headers,
|
|
1220
|
+
auth_settings,
|
|
1221
|
+
resource_path,
|
|
1222
|
+
method,
|
|
1223
|
+
body,
|
|
1224
|
+
prefix_separator_iterator
|
|
1225
|
+
)]
|
|
1226
|
+
|
|
1227
|
+
# must happen after cookie setting and auth setting in case user is overriding those
|
|
1228
|
+
if headers:
|
|
1229
|
+
used_headers.update(headers)
|
|
1230
|
+
|
|
1231
|
+
request_before_url_hook(
|
|
1232
|
+
resource_path_ref=resource_path_ref,
|
|
1128
1233
|
method=method,
|
|
1129
1234
|
configuration=self.configuration,
|
|
1130
1235
|
body=body,
|
|
1131
1236
|
fields=fields,
|
|
1132
1237
|
auth_settings=auth_settings,
|
|
1133
|
-
headers=
|
|
1238
|
+
headers=used_headers,
|
|
1134
1239
|
)
|
|
1135
1240
|
|
|
1241
|
+
# request url
|
|
1242
|
+
if host is None:
|
|
1243
|
+
url = self.configuration.host + resource_path_ref[0]
|
|
1244
|
+
else:
|
|
1245
|
+
# use server/host defined in path or operation instead
|
|
1246
|
+
url = host + resource_path_ref[0]
|
|
1247
|
+
|
|
1248
|
+
request_after_hook(
|
|
1249
|
+
resource_path=resource_path_ref[0],
|
|
1250
|
+
method=method,
|
|
1251
|
+
configuration=self.configuration,
|
|
1252
|
+
body=body,
|
|
1253
|
+
fields=fields,
|
|
1254
|
+
auth_settings=auth_settings,
|
|
1255
|
+
headers=used_headers,
|
|
1256
|
+
)
|
|
1257
|
+
|
|
1258
|
+
# perform request and return response
|
|
1259
|
+
response = await self.async_request(
|
|
1260
|
+
method,
|
|
1261
|
+
url,
|
|
1262
|
+
headers=used_headers,
|
|
1263
|
+
fields=fields,
|
|
1264
|
+
body=serialized_body,
|
|
1265
|
+
stream=stream,
|
|
1266
|
+
timeout=timeout,
|
|
1267
|
+
**kwargs
|
|
1268
|
+
)
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
return response
|
|
1272
|
+
|
|
1273
|
+
def __call_api(
|
|
1274
|
+
self,
|
|
1275
|
+
resource_path: str,
|
|
1276
|
+
method: str,
|
|
1277
|
+
headers: typing.Optional[HTTPHeaderDict] = None,
|
|
1278
|
+
serialized_body: typing.Optional[typing.Union[str, bytes]] = None,
|
|
1279
|
+
body: typing.Any = None,
|
|
1280
|
+
fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]] = None,
|
|
1281
|
+
auth_settings: typing.Optional[typing.List[str]] = None,
|
|
1282
|
+
stream: bool = False,
|
|
1283
|
+
timeout: typing.Optional[typing.Union[float, typing.Tuple]] = None,
|
|
1284
|
+
host: typing.Optional[str] = None,
|
|
1285
|
+
prefix_separator_iterator: PrefixSeparatorIterator = None,
|
|
1286
|
+
) -> ResponseWrapper:
|
|
1287
|
+
|
|
1136
1288
|
# header parameters
|
|
1137
1289
|
used_headers = HTTPHeaderDict(self.default_headers)
|
|
1138
1290
|
if self.cookie:
|
|
1139
1291
|
headers['Cookie'] = self.cookie
|
|
1140
1292
|
|
|
1141
1293
|
# auth setting
|
|
1142
|
-
|
|
1294
|
+
resource_path_ref = [self.update_params_for_auth(
|
|
1143
1295
|
used_headers,
|
|
1144
1296
|
auth_settings,
|
|
1145
1297
|
resource_path,
|
|
1146
1298
|
method,
|
|
1147
1299
|
body,
|
|
1148
1300
|
prefix_separator_iterator
|
|
1149
|
-
)
|
|
1301
|
+
)]
|
|
1150
1302
|
|
|
1151
1303
|
# must happen after cookie setting and auth setting in case user is overriding those
|
|
1152
1304
|
if headers:
|
|
1153
1305
|
used_headers.update(headers)
|
|
1154
1306
|
|
|
1307
|
+
request_before_url_hook(
|
|
1308
|
+
resource_path_ref=resource_path_ref,
|
|
1309
|
+
method=method,
|
|
1310
|
+
configuration=self.configuration,
|
|
1311
|
+
body=body,
|
|
1312
|
+
fields=fields,
|
|
1313
|
+
auth_settings=auth_settings,
|
|
1314
|
+
headers=used_headers,
|
|
1315
|
+
)
|
|
1316
|
+
|
|
1155
1317
|
# request url
|
|
1156
1318
|
if host is None:
|
|
1157
|
-
url = self.configuration.host +
|
|
1319
|
+
url = self.configuration.host + resource_path_ref[0]
|
|
1158
1320
|
else:
|
|
1159
1321
|
# use server/host defined in path or operation instead
|
|
1160
|
-
url = host +
|
|
1322
|
+
url = host + resource_path_ref[0]
|
|
1161
1323
|
|
|
1162
1324
|
request_after_hook(
|
|
1163
|
-
resource_path=
|
|
1325
|
+
resource_path=resource_path_ref[0],
|
|
1164
1326
|
method=method,
|
|
1165
1327
|
configuration=self.configuration,
|
|
1166
1328
|
body=body,
|
|
@@ -1183,6 +1345,60 @@ class ApiClient:
|
|
|
1183
1345
|
|
|
1184
1346
|
return response
|
|
1185
1347
|
|
|
1348
|
+
async def async_call_api(
|
|
1349
|
+
self,
|
|
1350
|
+
resource_path: str,
|
|
1351
|
+
method: str,
|
|
1352
|
+
headers: typing.Optional[HTTPHeaderDict] = None,
|
|
1353
|
+
serialized_body: typing.Optional[typing.Union[str, bytes]] = None,
|
|
1354
|
+
body: typing.Any = None,
|
|
1355
|
+
fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]] = None,
|
|
1356
|
+
auth_settings: typing.Optional[typing.List[str]] = None,
|
|
1357
|
+
stream: bool = False,
|
|
1358
|
+
timeout: typing.Optional[typing.Union[float, typing.Tuple]] = None,
|
|
1359
|
+
host: typing.Optional[str] = None,
|
|
1360
|
+
prefix_separator_iterator: PrefixSeparatorIterator = None,
|
|
1361
|
+
**kwargs
|
|
1362
|
+
) -> AsyncResponseWrapper:
|
|
1363
|
+
"""Makes the HTTP request (synchronous) and returns deserialized data.
|
|
1364
|
+
|
|
1365
|
+
:param resource_path: Path to method endpoint.
|
|
1366
|
+
:param method: Method to call.
|
|
1367
|
+
:param headers: Header parameters to be
|
|
1368
|
+
placed in the request header.
|
|
1369
|
+
:param body: Request body.
|
|
1370
|
+
:param fields: Request post form parameters,
|
|
1371
|
+
for `application/x-www-form-urlencoded`, `multipart/form-data`.
|
|
1372
|
+
:param auth_settings: Auth Settings names for the request.
|
|
1373
|
+
:param stream: if True, the urllib3.HTTPResponse object will
|
|
1374
|
+
be returned without reading/decoding response
|
|
1375
|
+
data. Also when True, if the openapi spec describes a file download,
|
|
1376
|
+
the data will be written to a local filesystme file and the BinarySchema
|
|
1377
|
+
instance will also inherit from FileSchema and FileIO
|
|
1378
|
+
Default is False.
|
|
1379
|
+
:type stream: bool, optional
|
|
1380
|
+
:param timeout: timeout setting for this request. If one
|
|
1381
|
+
number provided, it will be total request
|
|
1382
|
+
timeout. It can also be a pair (tuple) of
|
|
1383
|
+
(connection, read) timeouts.
|
|
1384
|
+
:param host: api endpoint host
|
|
1385
|
+
:return: response
|
|
1386
|
+
"""
|
|
1387
|
+
return await self.__async_call_api(
|
|
1388
|
+
resource_path,
|
|
1389
|
+
method,
|
|
1390
|
+
headers,
|
|
1391
|
+
serialized_body,
|
|
1392
|
+
body,
|
|
1393
|
+
fields,
|
|
1394
|
+
auth_settings,
|
|
1395
|
+
stream,
|
|
1396
|
+
timeout,
|
|
1397
|
+
host,
|
|
1398
|
+
prefix_separator_iterator,
|
|
1399
|
+
**kwargs
|
|
1400
|
+
)
|
|
1401
|
+
|
|
1186
1402
|
def call_api(
|
|
1187
1403
|
self,
|
|
1188
1404
|
resource_path: str,
|
|
@@ -1192,16 +1408,13 @@ class ApiClient:
|
|
|
1192
1408
|
body: typing.Any = None,
|
|
1193
1409
|
fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]] = None,
|
|
1194
1410
|
auth_settings: typing.Optional[typing.List[str]] = None,
|
|
1195
|
-
async_req: typing.Optional[bool] = None,
|
|
1196
1411
|
stream: bool = False,
|
|
1197
|
-
timeout: typing.Optional[typing.Union[
|
|
1412
|
+
timeout: typing.Optional[typing.Union[float, typing.Tuple]] = None,
|
|
1198
1413
|
host: typing.Optional[str] = None,
|
|
1199
1414
|
prefix_separator_iterator: PrefixSeparatorIterator = None,
|
|
1200
1415
|
) -> ResponseWrapper:
|
|
1201
1416
|
"""Makes the HTTP request (synchronous) and returns deserialized data.
|
|
1202
1417
|
|
|
1203
|
-
To make an async_req request, set the async_req parameter.
|
|
1204
|
-
|
|
1205
1418
|
:param resource_path: Path to method endpoint.
|
|
1206
1419
|
:param method: Method to call.
|
|
1207
1420
|
:param headers: Header parameters to be
|
|
@@ -1210,8 +1423,6 @@ class ApiClient:
|
|
|
1210
1423
|
:param fields: Request post form parameters,
|
|
1211
1424
|
for `application/x-www-form-urlencoded`, `multipart/form-data`.
|
|
1212
1425
|
:param auth_settings: Auth Settings names for the request.
|
|
1213
|
-
:param async_req: execute request asynchronously
|
|
1214
|
-
:type async_req: bool, optional TODO remove, unused
|
|
1215
1426
|
:param stream: if True, the urllib3.HTTPResponse object will
|
|
1216
1427
|
be returned without reading/decoding response
|
|
1217
1428
|
data. Also when True, if the openapi spec describes a file download,
|
|
@@ -1224,45 +1435,76 @@ class ApiClient:
|
|
|
1224
1435
|
timeout. It can also be a pair (tuple) of
|
|
1225
1436
|
(connection, read) timeouts.
|
|
1226
1437
|
:param host: api endpoint host
|
|
1227
|
-
:return:
|
|
1228
|
-
If async_req parameter is True,
|
|
1229
|
-
the request will be called asynchronously.
|
|
1230
|
-
The method will return the request thread.
|
|
1231
|
-
If parameter async_req is False or missing,
|
|
1232
|
-
then the method will return the response directly.
|
|
1438
|
+
:return: response
|
|
1233
1439
|
"""
|
|
1440
|
+
return self.__call_api(
|
|
1441
|
+
resource_path,
|
|
1442
|
+
method,
|
|
1443
|
+
headers,
|
|
1444
|
+
serialized_body,
|
|
1445
|
+
body,
|
|
1446
|
+
fields,
|
|
1447
|
+
auth_settings,
|
|
1448
|
+
stream,
|
|
1449
|
+
timeout,
|
|
1450
|
+
host,
|
|
1451
|
+
prefix_separator_iterator,
|
|
1452
|
+
)
|
|
1234
1453
|
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
resource_path,
|
|
1238
|
-
method,
|
|
1239
|
-
headers,
|
|
1240
|
-
serialized_body,
|
|
1241
|
-
body,
|
|
1242
|
-
fields,
|
|
1243
|
-
auth_settings,
|
|
1244
|
-
stream,
|
|
1245
|
-
timeout,
|
|
1246
|
-
host,
|
|
1247
|
-
prefix_separator_iterator,
|
|
1248
|
-
)
|
|
1454
|
+
def fields_to_dict(self, fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]]):
|
|
1455
|
+
"""Converts fields to dict.
|
|
1249
1456
|
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1457
|
+
:param fields: fields
|
|
1458
|
+
:return: dict
|
|
1459
|
+
"""
|
|
1460
|
+
if fields is None:
|
|
1461
|
+
return None
|
|
1462
|
+
return {k: v for k, v in fields}
|
|
1463
|
+
|
|
1464
|
+
async def async_request(
|
|
1465
|
+
self,
|
|
1466
|
+
method: str,
|
|
1467
|
+
url: str,
|
|
1468
|
+
headers: typing.Optional[HTTPHeaderDict] = None,
|
|
1469
|
+
fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]] = None,
|
|
1470
|
+
body: typing.Optional[typing.Union[str, bytes]] = None,
|
|
1471
|
+
stream: bool = False,
|
|
1472
|
+
timeout: typing.Optional[typing.Union[float, typing.Tuple]] = None,
|
|
1473
|
+
**kwargs
|
|
1474
|
+
) -> AsyncResponseWrapper:
|
|
1475
|
+
if body and fields:
|
|
1476
|
+
raise ApiValueError("body parameter cannot be used with fields parameter")
|
|
1477
|
+
data = None
|
|
1478
|
+
if body:
|
|
1479
|
+
data=body
|
|
1480
|
+
if fields:
|
|
1481
|
+
data=self.fields_to_dict(fields)
|
|
1482
|
+
session = aiohttp.ClientSession()
|
|
1483
|
+
t1 = time.time()
|
|
1484
|
+
if method == "GET":
|
|
1485
|
+
response = await session.get(url, headers=headers, timeout=timeout, **kwargs)
|
|
1486
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1487
|
+
elif method == "HEAD":
|
|
1488
|
+
response = await session.head(url, headers=headers, timeout=timeout, **kwargs)
|
|
1489
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1490
|
+
elif method == "OPTIONS":
|
|
1491
|
+
response = await session.options(url, data=data, headers=headers, timeout=timeout, **kwargs)
|
|
1492
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1493
|
+
elif method == "POST":
|
|
1494
|
+
response = await session.post(url, data=data, headers=headers, timeout=timeout, **kwargs)
|
|
1495
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1496
|
+
elif method == "PUT":
|
|
1497
|
+
response = await session.put(url, data=data, headers=headers, timeout=timeout, **kwargs)
|
|
1498
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1499
|
+
elif method == "PATCH":
|
|
1500
|
+
response = await session.patch(url, data=data, headers=headers, timeout=timeout, **kwargs)
|
|
1501
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1502
|
+
elif method == "DELETE":
|
|
1503
|
+
response = await session.delete(url, data=data, headers=headers, timeout=timeout, **kwargs)
|
|
1504
|
+
return AsyncResponseWrapper(response, time.time() - t1, session)
|
|
1505
|
+
raise ApiValueError(
|
|
1506
|
+
"http method must be `GET`, `HEAD`, `OPTIONS`,"
|
|
1507
|
+
" `POST`, `PATCH`, `PUT` or `DELETE`."
|
|
1266
1508
|
)
|
|
1267
1509
|
|
|
1268
1510
|
def request(
|
|
@@ -1273,7 +1515,7 @@ class ApiClient:
|
|
|
1273
1515
|
fields: typing.Optional[typing.Tuple[typing.Tuple[str, str], ...]] = None,
|
|
1274
1516
|
body: typing.Optional[typing.Union[str, bytes]] = None,
|
|
1275
1517
|
stream: bool = False,
|
|
1276
|
-
timeout: typing.Optional[typing.Union[
|
|
1518
|
+
timeout: typing.Optional[typing.Union[float, typing.Tuple]] = None,
|
|
1277
1519
|
) -> ResponseWrapper:
|
|
1278
1520
|
"""Makes the HTTP request using RESTClient."""
|
|
1279
1521
|
if method == "GET":
|
|
@@ -1529,8 +1771,8 @@ class RequestBody(StyleFormSerializer, JSONDetector):
|
|
|
1529
1771
|
def __serialize_multipart_form_data(
|
|
1530
1772
|
self, in_data: Schema
|
|
1531
1773
|
) -> typing.Dict[str, typing.Tuple[RequestField, ...]]:
|
|
1532
|
-
if not isinstance(in_data, frozendict.frozendict):
|
|
1533
|
-
raise ValueError(f'Unable to serialize {in_data} to multipart/form-data because it is not a dict of data')
|
|
1774
|
+
if not isinstance(in_data, frozendict.frozendict) and not isinstance(in_data, list) and not isinstance(in_data, tuple):
|
|
1775
|
+
raise ValueError(f'Unable to serialize {in_data} to multipart/form-data because it is not a dict of data or a list of data')
|
|
1534
1776
|
"""
|
|
1535
1777
|
In a multipart/form-data request body, each schema property, or each element of a schema array property,
|
|
1536
1778
|
takes a section in the payload with an internal header as defined by RFC7578. The serialization strategy
|
|
@@ -1545,24 +1787,33 @@ class RequestBody(StyleFormSerializer, JSONDetector):
|
|
|
1545
1787
|
If the property is a type: string with a contentEncoding, the default Content-Type is application/octet-stream
|
|
1546
1788
|
"""
|
|
1547
1789
|
fields: typing.List[RequestField] = []
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1790
|
+
|
|
1791
|
+
def add_field(data):
|
|
1792
|
+
for key, value in data.items():
|
|
1793
|
+
if isinstance(value, tuple):
|
|
1794
|
+
if value:
|
|
1795
|
+
# values use explode = True, so the code makes a RequestField for each item with name=key
|
|
1796
|
+
for item in value:
|
|
1797
|
+
request_field = self.__multipart_form_item(key=key, value=item)
|
|
1798
|
+
fields.append(request_field)
|
|
1799
|
+
else:
|
|
1800
|
+
# send an empty array as json because exploding will not send it
|
|
1801
|
+
request_field = self.__multipart_json_item(key=key, value=value)
|
|
1554
1802
|
fields.append(request_field)
|
|
1555
1803
|
else:
|
|
1556
|
-
|
|
1557
|
-
request_field = self.__multipart_json_item(key=key, value=value)
|
|
1804
|
+
request_field = self.__multipart_form_item(key=key, value=value)
|
|
1558
1805
|
fields.append(request_field)
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1806
|
+
|
|
1807
|
+
if isinstance(in_data, list) or isinstance(in_data, tuple):
|
|
1808
|
+
for item in in_data:
|
|
1809
|
+
add_field(item)
|
|
1810
|
+
else:
|
|
1811
|
+
add_field(in_data)
|
|
1562
1812
|
|
|
1563
1813
|
# This is necessary to fill the "Content-Disposition" header needed for naming fields in multipart
|
|
1564
1814
|
for field in fields:
|
|
1565
1815
|
field.make_multipart(content_type=field.headers["Content-Type"])
|
|
1816
|
+
|
|
1566
1817
|
return dict(fields=tuple(fields))
|
|
1567
1818
|
|
|
1568
1819
|
def __serialize_application_octet_stream(self, in_data: BinarySchema) -> typing.Dict[str, bytes]:
|