Client for SnapTrade
Project description
snaptrade-python-sdk@10.28.0
Connect brokerage accounts to your app for live positions and trading
Requirements
Python >=3.7
Installing
pip install snaptrade-python-sdk==10.28.0
Getting Started
import os
import uuid
from pprint import pprint
from snaptrade_client import SnapTrade
# 1) Initialize a client with your clientID and consumerKey.
snaptrade = SnapTrade(
consumer_key=os.environ["SNAPTRADE_CONSUMER_KEY"],
client_id=os.environ["SNAPTRADE_CLIENT_ID"],
)
# 2) Check that the client is able to make a request to the API server.
api_response = snaptrade.api_status.check()
pprint(api_response.body)
# 3) Create a new user on SnapTrade
user_id = str(uuid.uuid4())
register_response = snaptrade.authentication.register_snap_trade_user(
body={"userId": user_id}
)
pprint(register_response.body)
# Note: A user secret is only generated once. It's required to access
# resources for certain endpoints.
user_secret = register_response.body["userSecret"]
# 4) Get a redirect URI. Users will need this to connect
# their brokerage to the SnapTrade server.
redirect_uri = snaptrade.authentication.login_snap_trade_user(
query_params={"userId": user_id, "userSecret": user_secret}
)
print(redirect_uri.body)
snaptrade.portfolio_management.create(
query_params={"userId": user_id, "userSecret": user_secret},
body={"id": str(uuid.uuid4()), "name": "MyPortfolio"},
)
res = snaptrade.portfolio_management.list(
query_params={"userId": user_id, "userSecret": user_secret}
)
pprint(res.body)
# 5) Obtaining account holdings data
holdings = snaptrade.account_information.get_all_user_holdings(
query_params={"userId": user_id, "userSecret": user_secret}
)
pprint(holdings.body)
# 6) Deleting a user
deleted_response = snaptrade.authentication.delete_snap_trade_user(
query_params={"userId": user_id}
)
pprint(deleted_response.body)
Async
async
support is available by prepending a
to any method.
import asyncio
from pprint import pprint
from snaptrade_client import SnapTrade, ApiException
snaptrade = SnapTrade(
# Defining the host is optional and defaults to https://api.snaptrade.com/api/v1
# See configuration.py for a list of all supported configuration parameters.
host="https://api.snaptrade.com/api/v1",
consumer_key="YOUR_CONSUMER_KEY",
client_id="YOUR_CLIENT_ID",
)
async def main():
try:
# List all accounts for the user, plus balances, positions, and orders for each account.
get_all_user_holdings_response = await snaptrade.account_information.aget_all_user_holdings(
user_id="John.doe@snaptrade.com", # required
user_secret="USERSECRET123", # required
brokerage_authorizations="917c8734-8470-4a3e-a18f-57c3f2ee6631", # optional
)
pprint(get_all_user_holdings_response.body)
pprint(get_all_user_holdings_response.body["account"])
pprint(get_all_user_holdings_response.body["balances"])
pprint(get_all_user_holdings_response.body["positions"])
pprint(get_all_user_holdings_response.body["total_value"])
pprint(get_all_user_holdings_response.headers)
pprint(get_all_user_holdings_response.status)
pprint(get_all_user_holdings_response.round_trip_time)
except ApiException as e:
print(
"Exception when calling AccountInformationApi.get_all_user_holdings: %s\n"
% e
)
pprint(e.body)
pprint(e.headers)
pprint(e.status)
pprint(e.reason)
pprint(e.round_trip_time)
asyncio.run(main())
Documentation for API Endpoints
All URIs are relative to https://api.snaptrade.com/api/v1
Class | Method | HTTP request | Description |
---|---|---|---|
AccountInformationApi | get_all_user_holdings | GET /holdings | List all accounts for the user, plus balances, positions, and orders for each account. |
AccountInformationApi | get_user_account_balance | GET /accounts/{accountId}/balances | List account balances |
AccountInformationApi | get_user_account_details | GET /accounts/{accountId} | Return details of a specific investment account |
AccountInformationApi | get_user_account_orders | GET /accounts/{accountId}/orders | Get all history of orders placed in account |
AccountInformationApi | get_user_account_positions | GET /accounts/{accountId}/positions | List account positions |
AccountInformationApi | get_user_holdings | GET /accounts/{accountId}/holdings | List balances, positions and orders for the specified account. |
AccountInformationApi | list_user_accounts | GET /accounts | List accounts |
AccountInformationApi | update_user_account | PUT /accounts/{accountId} | Update details of an investment account |
APIStatusApi | check | GET / | Get API Status |
AuthenticationApi | delete_snap_trade_user | DELETE /snapTrade/deleteUser | Delete SnapTrade user |
AuthenticationApi | get_user_jwt | GET /snapTrade/encryptedJWT | Generate encrypted JWT token |
AuthenticationApi | list_snap_trade_users | GET /snapTrade/listUsers | List SnapTrade users |
AuthenticationApi | login_snap_trade_user | POST /snapTrade/login | Login user & generate connection link |
AuthenticationApi | register_snap_trade_user | POST /snapTrade/registerUser | Create SnapTrade user |
ConnectionsApi | detail_brokerage_authorization | GET /authorizations/{authorizationId} | Get detail of a specific brokerage authorizations for the user |
ConnectionsApi | list_brokerage_authorizations | GET /authorizations | List all brokerage authorizations for the user |
ConnectionsApi | remove_brokerage_authorization | DELETE /authorizations/{authorizationId} | Remove a brokerage authorization. |
ConnectionsApi | session_events | GET /sessionEvents | List all session events for the partner |
ErrorLogsApi | list_user_errors | GET /snapTrade/listUserErrors | Retrieve error logs on behalf of your SnapTrade users |
OptionsApi | get_option_strategy | POST /accounts/{accountId}/optionStrategy | Creates an option strategy object that will be used to place an option strategy order |
OptionsApi | get_options_chain | GET /accounts/{accountId}/optionsChain | Get the options chain |
OptionsApi | get_options_strategy_quote | GET /accounts/{accountId}/optionStrategy/{optionStrategyId} | Get latest market data of option strategy |
OptionsApi | list_option_holdings | GET /accounts/{accountId}/options | Get the options holdings in the account |
OptionsApi | place_option_strategy | POST /accounts/{accountId}/optionStrategy/{optionStrategyId}/execute | Place an option strategy order on the brokerage |
ReferenceDataApi | get_currency_exchange_rate_pair | GET /currencies/rates/{currencyPair} | Return the exchange rate of a currency pair |
ReferenceDataApi | get_partner_info | GET /snapTrade/partners | Get metadata related to Snaptrade partner |
ReferenceDataApi | get_security_types | GET /securityTypes | List of all security types. |
ReferenceDataApi | get_stock_exchanges | GET /exchanges | List exchanges |
ReferenceDataApi | get_symbols | POST /symbols | Search for symbols |
ReferenceDataApi | get_symbols_by_ticker | GET /symbols/{ticker} | Get details of a symbol by the ticker |
ReferenceDataApi | list_all_brokerage_authorization_type | GET /brokerageAuthorizationTypes | List of all brokerage authorization types |
ReferenceDataApi | list_all_brokerages | GET /brokerages | List brokerages |
ReferenceDataApi | list_all_currencies | GET /currencies | List currencies |
ReferenceDataApi | list_all_currencies_rates | GET /currencies/rates | List currency exchange rates |
ReferenceDataApi | symbol_search_user_account | POST /accounts/{accountId}/symbols | Search for symbols available in an account |
TradingApi | cancel_user_account_order | POST /accounts/{accountId}/orders/cancel | Cancel open order in account |
TradingApi | get_order_impact | POST /trade/impact | Check impact of trades on account. |
TradingApi | get_user_account_quotes | GET /accounts/{accountId}/quotes | Get symbol quotes |
TradingApi | place_force_order | POST /trade/place | Place a trade with NO validation. |
TradingApi | place_oco_order | POST /trade/oco | Place a OCO (One Cancels Other) order |
TradingApi | place_order | POST /trade/{tradeId} | Place order |
TransactionsAndReportingApi | get_activities | GET /activities | Get transaction history for a user |
TransactionsAndReportingApi | get_reporting_custom_range | GET /performance/custom | Get performance information for a specific timeframe |
Documentation For Models
- Account
- AccountHoldings
- AccountHoldingsAccount
- AccountIDs
- AccountMeta
- AccountOrderRecord
- AccountOrderRecordStatus
- AccountSimple
- AccountSyncStatus
- Action
- Balance
- Brokerage
- BrokerageAuthIDs
- BrokerageAuthorization
- BrokerageAuthorizationMeta
- BrokerageAuthorizationType
- BrokerageAuthorizationTypeReadOnly
- BrokerageAuthorizationTypeReadOnlyBrokerage
- BrokerageExchanges
- BrokerageSymbol
- BrokerageType
- CalculatedTrade
- CancelledUnits
- Cash
- CashRestriction
- ClientID
- ConsumerKey
- Currency
- DeleteUserResponse
- DividendAtDate
- EncryptedResponse
- EncryptedResponseEncryptedMessageData
- Exchange
- ExchangeRatePairs
- ExcludedAsset
- FilledUnits
- Id
- JWT
- LoginRedirectURI
- ManualTrade
- ManualTradeAndImpact
- ManualTradeBalance
- ManualTradeForm
- ManualTradeSymbol
- Model400FailedRequestResponse
- Model401FailedRequestResponse
- Model403FailedRequestResponse
- Model404FailedRequestResponse
- ModelAssetClass
- ModelAssetClassDetails
- ModelAssetClassTarget
- ModelPortfolio
- ModelPortfolioAssetClass
- ModelPortfolioDetails
- ModelPortfolioSecurity
- MonthlyDividends
- NetContributions
- NetDividend
- OpenUnits
- OptionChain
- OptionChainItem
- OptionChainItemChainPerRoot
- OptionChainItemChainPerRootItem
- OptionChainItemChainPerRootItemChainPerStrikePrice
- OptionChainItemChainPerRootItemChainPerStrikePriceItem
- OptionLeg
- OptionStrategy
- OptionStrategyLegs
- OptionsHoldings
- OptionsPosition
- OptionsSymbol
- OrderType
- PartnerData
- PastValue
- Percent
- PerformanceCustom
- PerformanceCustomBadTickers
- PortfolioGroup
- PortfolioGroupInfo
- PortfolioGroupPosition
- PortfolioGroupSettings
- Position
- PositionSymbol
- Price
- RedirectTokenandPin
- ReportingDate
- ReportingFrequency
- RsaPublicKey
- SecurityType
- SessionEvent
- Signature
- SignedContent
- SnapTradeAPIDisclaimerAcceptStatus
- SnapTradeHoldingsAccount
- SnapTradeHoldingsAccountAccountId
- SnapTradeHoldingsAccountAccountIdMeta
- SnapTradeHoldingsAccountMeta
- SnapTradeHoldingsTotalValue
- SnapTradeLoginUserRequestBody
- SnapTradeRegisterUserRequestBody
- SnapTradeUserID
- SnapTradeUserSecret
- Status
- StopPrice
- StrategyImpact
- StrategyImpactLegs
- StrategyImpactLegsItem
- StrategyOrderPlace
- StrategyOrderPlaceOrders
- StrategyOrderPlaceOrdersItem
- StrategyOrderPlaceOrdersItemLegs
- StrategyOrderPlaceOrdersItemLegsItem
- StrategyOrderQuotes
- StrategyOrderRecord
- StrategyQuotes
- StrategyQuotesGreek
- SubPeriodReturnRate
- Symbol
- SymbolQuery
- SymbolsQuotes
- SyncStatusDate
- TargetAsset
- TargetAssetList
- TargetAssetMeta
- Time
- TimeInForce
- Timestamp
- Trade
- TradeExecutionStatus
- TradeExecutionStatusMeta
- TradeImpact
- TransactionsStatus
- USExchange
- UnderlyingSymbol
- Units
- UniversalActivity
- UniversalSymbol
- UniversalSymbolTicker
- UserErrorLog
- UserID
- UserIDandSecret
- UserList
- UserSecret
- UserSettings
Author
This Python package is automatically generated by Konfig
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
snaptrade_python_sdk-10.28.0.tar.gz
(183.5 kB
view hashes)
Built Distribution
Close
Hashes for snaptrade_python_sdk-10.28.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 635938cc39e6d333e46ffaeb9bb669262597b5f18da85e0fa2df02f39f22add4 |
|
MD5 | 818254ab1cf724f98a46be206e814e8c |
|
BLAKE2b-256 | 693781b787d30fa31f2c46e18253d8ffaa6b27e713cd41e9fe96752610b5ddc5 |
Close
Hashes for snaptrade_python_sdk-10.28.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9608076833e52c4b3bc44c3fd9c7853e240d4064a96736eb78f56b488e598f0f |
|
MD5 | ad8dd792d3404ff617d1a402fbde60df |
|
BLAKE2b-256 | 7eb38910672636e9e97c406e37dacd575a5bbf8a088cf869a11f78a4fb28d07c |