finance_dev 0.9.0__tar.gz
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.
- finance_dev-0.9.0/PKG-INFO +913 -0
- finance_dev-0.9.0/README.md +900 -0
- finance_dev-0.9.0/pyproject.toml +57 -0
- finance_dev-0.9.0/setup.cfg +4 -0
- finance_dev-0.9.0/src/finance_dev/__init__.py +18 -0
- finance_dev-0.9.0/src/finance_dev/_hooks/__init__.py +7 -0
- finance_dev-0.9.0/src/finance_dev/_hooks/clientcredentials.py +319 -0
- finance_dev-0.9.0/src/finance_dev/_hooks/oauth2scopes.py +50 -0
- finance_dev-0.9.0/src/finance_dev/_hooks/registration.py +13 -0
- finance_dev-0.9.0/src/finance_dev/_hooks/sdkhooks.py +82 -0
- finance_dev-0.9.0/src/finance_dev/_hooks/types.py +125 -0
- finance_dev-0.9.0/src/finance_dev/_version.py +16 -0
- finance_dev-0.9.0/src/finance_dev/accounts.py +797 -0
- finance_dev-0.9.0/src/finance_dev/alternativedata.py +4830 -0
- finance_dev-0.9.0/src/finance_dev/analytics.py +3757 -0
- finance_dev-0.9.0/src/finance_dev/basesdk.py +393 -0
- finance_dev-0.9.0/src/finance_dev/calendar.py +1523 -0
- finance_dev-0.9.0/src/finance_dev/chart.py +1881 -0
- finance_dev-0.9.0/src/finance_dev/company.py +1105 -0
- finance_dev-0.9.0/src/finance_dev/corporateactions.py +1795 -0
- finance_dev-0.9.0/src/finance_dev/economy.py +1153 -0
- finance_dev-0.9.0/src/finance_dev/errors/__init__.py +94 -0
- finance_dev-0.9.0/src/finance_dev/errors/apierror.py +41 -0
- finance_dev-0.9.0/src/finance_dev/errors/authenticationerrorenvelope.py +43 -0
- finance_dev-0.9.0/src/finance_dev/errors/badrequest.py +34 -0
- finance_dev-0.9.0/src/finance_dev/errors/errorenvelope.py +42 -0
- finance_dev-0.9.0/src/finance_dev/errors/errorresponse.py +45 -0
- finance_dev-0.9.0/src/finance_dev/errors/financedevapierror.py +31 -0
- finance_dev-0.9.0/src/finance_dev/errors/forbidden.py +34 -0
- finance_dev-0.9.0/src/finance_dev/errors/internalservererror.py +35 -0
- finance_dev-0.9.0/src/finance_dev/errors/no_response_error.py +18 -0
- finance_dev-0.9.0/src/finance_dev/errors/notfound.py +34 -0
- finance_dev-0.9.0/src/finance_dev/errors/orderhistorybadrequest.py +35 -0
- finance_dev-0.9.0/src/finance_dev/errors/predorderserrorenvelope.py +42 -0
- finance_dev-0.9.0/src/finance_dev/errors/responsevalidationerror.py +28 -0
- finance_dev-0.9.0/src/finance_dev/errors/unauthorized.py +34 -0
- finance_dev-0.9.0/src/finance_dev/estimates.py +1906 -0
- finance_dev-0.9.0/src/finance_dev/etf.py +1108 -0
- finance_dev-0.9.0/src/finance_dev/filings.py +586 -0
- finance_dev-0.9.0/src/finance_dev/financials.py +4079 -0
- finance_dev-0.9.0/src/finance_dev/history.py +477 -0
- finance_dev-0.9.0/src/finance_dev/httpclient.py +126 -0
- finance_dev-0.9.0/src/finance_dev/indices.py +2308 -0
- finance_dev-0.9.0/src/finance_dev/logos.py +692 -0
- finance_dev-0.9.0/src/finance_dev/market.py +1825 -0
- finance_dev-0.9.0/src/finance_dev/markets.py +952 -0
- finance_dev-0.9.0/src/finance_dev/models/__init__.py +4568 -0
- finance_dev-0.9.0/src/finance_dev/models/accountbalancev2.py +340 -0
- finance_dev-0.9.0/src/finance_dev/models/accountitem.py +78 -0
- finance_dev-0.9.0/src/finance_dev/models/accountposition.py +147 -0
- finance_dev-0.9.0/src/finance_dev/models/aggregatetechnicalindicatorsresponse.py +192 -0
- finance_dev-0.9.0/src/finance_dev/models/analystinsightitem.py +161 -0
- finance_dev-0.9.0/src/finance_dev/models/analystinsightsresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/apperror.py +123 -0
- finance_dev-0.9.0/src/finance_dev/models/authenticationerrordetail.py +58 -0
- finance_dev-0.9.0/src/finance_dev/models/bankbranchesresponse.py +96 -0
- finance_dev-0.9.0/src/finance_dev/models/basicfinancials.py +243 -0
- finance_dev-0.9.0/src/finance_dev/models/bullbearanalysisresponse.py +150 -0
- finance_dev-0.9.0/src/finance_dev/models/cancelorderop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/cancelordrequest_union.py +287 -0
- finance_dev-0.9.0/src/finance_dev/models/cancelordresponse.py +115 -0
- finance_dev-0.9.0/src/finance_dev/models/cashflowstatement.py +290 -0
- finance_dev-0.9.0/src/finance_dev/models/cashflowstatementsresponse.py +61 -0
- finance_dev-0.9.0/src/finance_dev/models/chartbars.py +111 -0
- finance_dev-0.9.0/src/finance_dev/models/chartconfig.py +81 -0
- finance_dev-0.9.0/src/finance_dev/models/chartresolution.py +46 -0
- finance_dev-0.9.0/src/finance_dev/models/companyesgresponse.py +408 -0
- finance_dev-0.9.0/src/finance_dev/models/companyexecutive.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/companyexecutiveresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/companypeersresponse.py +38 -0
- finance_dev-0.9.0/src/finance_dev/models/companypresentationresponse.py +96 -0
- finance_dev-0.9.0/src/finance_dev/models/companyprofile.py +255 -0
- finance_dev-0.9.0/src/finance_dev/models/conferencecallsresponse.py +169 -0
- finance_dev-0.9.0/src/finance_dev/models/congressionaltradingresponse.py +138 -0
- finance_dev-0.9.0/src/finance_dev/models/covid19uscasesresponse.py +79 -0
- finance_dev-0.9.0/src/finance_dev/models/createconfigwatchlistop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/createwatchlistrequest.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/dailymarketsummaryresponse.py +73 -0
- finance_dev-0.9.0/src/finance_dev/models/deleteconfigwatchlistbyidop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/dividenditem.py +125 -0
- finance_dev-0.9.0/src/finance_dev/models/dividendsresponse.py +61 -0
- finance_dev-0.9.0/src/finance_dev/models/earningrelease.py +291 -0
- finance_dev-0.9.0/src/finance_dev/models/earningscallliveresponse.py +103 -0
- finance_dev-0.9.0/src/finance_dev/models/earningsqualityscoreresponse.py +140 -0
- finance_dev-0.9.0/src/finance_dev/models/earningssurprisesresponse.py +125 -0
- finance_dev-0.9.0/src/finance_dev/models/ebitdaestimatesresponse.py +176 -0
- finance_dev-0.9.0/src/finance_dev/models/ebitestimatesresponse.py +176 -0
- finance_dev-0.9.0/src/finance_dev/models/economicscalendarevent.py +160 -0
- finance_dev-0.9.0/src/finance_dev/models/economicsindicator.py +87 -0
- finance_dev-0.9.0/src/finance_dev/models/epsestimatesresponse.py +176 -0
- finance_dev-0.9.0/src/finance_dev/models/equitydetailsdto.py +569 -0
- finance_dev-0.9.0/src/finance_dev/models/errorcode.py +48 -0
- finance_dev-0.9.0/src/finance_dev/models/etblistresponse.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/etbsearchrequest.py +21 -0
- finance_dev-0.9.0/src/finance_dev/models/etbsearchresponse.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/etfcountryallocationresponse.py +113 -0
- finance_dev-0.9.0/src/finance_dev/models/etfholdingsresponse.py +163 -0
- finance_dev-0.9.0/src/finance_dev/models/etfprofileresponse.py +234 -0
- finance_dev-0.9.0/src/finance_dev/models/etfsectorallocationresponse.py +113 -0
- finance_dev-0.9.0/src/finance_dev/models/exchangecode.py +90 -0
- finance_dev-0.9.0/src/finance_dev/models/fdaadvisorycommitteecalendarresponse.py +88 -0
- finance_dev-0.9.0/src/finance_dev/models/filingsimilarityrecord.py +115 -0
- finance_dev-0.9.0/src/finance_dev/models/filingssimilarityindexdatawrapper.py +52 -0
- finance_dev-0.9.0/src/finance_dev/models/filingssimilarityindexresponse.py +42 -0
- finance_dev-0.9.0/src/finance_dev/models/financialratiosresponse.py +252 -0
- finance_dev-0.9.0/src/finance_dev/models/financialsreporteddatawrapper.py +49 -0
- finance_dev-0.9.0/src/finance_dev/models/financialsreportedresponse.py +42 -0
- finance_dev-0.9.0/src/finance_dev/models/financialsrevenuebreakdowndatawrapper.py +49 -0
- finance_dev-0.9.0/src/finance_dev/models/financialsrevenuebreakdownresponse.py +42 -0
- finance_dev-0.9.0/src/finance_dev/models/financialsstatementsdatawrapper.py +44 -0
- finance_dev-0.9.0/src/finance_dev/models/financialsstatementsresponse.py +42 -0
- finance_dev-0.9.0/src/finance_dev/models/financialstatement.py +171 -0
- finance_dev-0.9.0/src/finance_dev/models/financialstatementtype.py +14 -0
- finance_dev-0.9.0/src/finance_dev/models/getaccountbalanceop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getaccountpositionsop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getaccountsresponse.py +22 -0
- finance_dev-0.9.0/src/finance_dev/models/getaggregatetechnicalindicatorsop.py +94 -0
- finance_dev-0.9.0/src/finance_dev/models/getanalystinsightsop.py +164 -0
- finance_dev-0.9.0/src/finance_dev/models/getbankbranchesop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getbaseeventop.py +87 -0
- finance_dev-0.9.0/src/finance_dev/models/getbullbearanalysisop.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/getcashflowstatementsop.py +564 -0
- finance_dev-0.9.0/src/finance_dev/models/getchartconfigop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/getcharthistoryop.py +122 -0
- finance_dev-0.9.0/src/finance_dev/models/getcharttimeop.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/getcompanyesgop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getcompanyexecutivesop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getcompanymetricsop.py +68 -0
- finance_dev-0.9.0/src/finance_dev/models/getcompanypeersop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getcompanypresentationop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getcompanyprofileop.py +86 -0
- finance_dev-0.9.0/src/finance_dev/models/getconferencecallsop.py +111 -0
- finance_dev-0.9.0/src/finance_dev/models/getconfigwatchlistbyidop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getconfigwatchlistsop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/getcongressionaltradingop.py +73 -0
- finance_dev-0.9.0/src/finance_dev/models/getcovid19uscasesop.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/getdailymarketsummaryop.py +92 -0
- finance_dev-0.9.0/src/finance_dev/models/getdividendsop.py +294 -0
- finance_dev-0.9.0/src/finance_dev/models/getearningscalendarop.py +87 -0
- finance_dev-0.9.0/src/finance_dev/models/getearningscallliveop.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/getearningsqualityscoreop.py +81 -0
- finance_dev-0.9.0/src/finance_dev/models/getearningssurprisesop.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/getebitdaestimatesop.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/getebitestimatesop.py +88 -0
- finance_dev-0.9.0/src/finance_dev/models/geteconomicscalendarop.py +92 -0
- finance_dev-0.9.0/src/finance_dev/models/geteconomicscalendarresponse.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getepsestimatesop.py +88 -0
- finance_dev-0.9.0/src/finance_dev/models/getequitydetailsop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getequitydetailsresponse.py +45 -0
- finance_dev-0.9.0/src/finance_dev/models/getetblistop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/getetfcountryallocationop.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/getetfholdingsop.py +96 -0
- finance_dev-0.9.0/src/finance_dev/models/getetfprofileop.py +77 -0
- finance_dev-0.9.0/src/finance_dev/models/getetfsectorallocationop.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/geteventcontractsop.py +87 -0
- finance_dev-0.9.0/src/finance_dev/models/getfdaadvisorycommitteecalendarop.py +47 -0
- finance_dev-0.9.0/src/finance_dev/models/getfilingssimilarityindexop.py +102 -0
- finance_dev-0.9.0/src/finance_dev/models/getfinancialratiosop.py +612 -0
- finance_dev-0.9.0/src/finance_dev/models/getfinancialstatementsop.py +117 -0
- finance_dev-0.9.0/src/finance_dev/models/getfundownershipop.py +77 -0
- finance_dev-0.9.0/src/finance_dev/models/gethistoricaldataop.py +61 -0
- finance_dev-0.9.0/src/finance_dev/models/gethistoricalesgop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/gethistorybatchop.py +74 -0
- finance_dev-0.9.0/src/finance_dev/models/gethistoryop.py +123 -0
- finance_dev-0.9.0/src/finance_dev/models/getincomestatementsop.py +564 -0
- finance_dev-0.9.0/src/finance_dev/models/getindexbarop.py +140 -0
- finance_dev-0.9.0/src/finance_dev/models/getindexbarsop.py +149 -0
- finance_dev-0.9.0/src/finance_dev/models/getindexchartbarsop.py +178 -0
- finance_dev-0.9.0/src/finance_dev/models/getindexrealtimevaluesop.py +94 -0
- finance_dev-0.9.0/src/finance_dev/models/getinflationexpectationsop.py +157 -0
- finance_dev-0.9.0/src/finance_dev/models/getinflationop.py +154 -0
- finance_dev-0.9.0/src/finance_dev/models/getinsidertransactionsop.py +90 -0
- finance_dev-0.9.0/src/finance_dev/models/getinstitutionalownershipop.py +99 -0
- finance_dev-0.9.0/src/finance_dev/models/getinstitutionalportfolioop.py +75 -0
- finance_dev-0.9.0/src/finance_dev/models/getinvestmentthemeop.py +68 -0
- finance_dev-0.9.0/src/finance_dev/models/getipocalendarop.py +63 -0
- finance_dev-0.9.0/src/finance_dev/models/getlobbyingop.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/getmarketbreadthop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/getmarketholidaysop.py +65 -0
- finance_dev-0.9.0/src/finance_dev/models/getmarketstatusop.py +65 -0
- finance_dev-0.9.0/src/finance_dev/models/getmergersandacquisitionsop.py +113 -0
- finance_dev-0.9.0/src/finance_dev/models/getnetinflowop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/getnewsbyidop.py +73 -0
- finance_dev-0.9.0/src/finance_dev/models/getnewsop.py +98 -0
- finance_dev-0.9.0/src/finance_dev/models/getnewssentimentop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionchainsnapshotop.py +244 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptioncontractsnapshotop.py +69 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptiondetailsop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptiondetailsresponse.py +45 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionlasttradeop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionopencloseop.py +66 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionpreviousdayop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionquotesop.py +177 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionsactivityop.py +111 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionsetfstopvolumeop.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionsstockstopgainersop.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionsstockstopvolumeop.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptionsunusualactivityop.py +100 -0
- finance_dev-0.9.0/src/finance_dev/models/getoptiontradesop.py +177 -0
- finance_dev-0.9.0/src/finance_dev/models/getordersv2response.py +66 -0
- finance_dev-0.9.0/src/finance_dev/models/getownershipdataop.py +77 -0
- finance_dev-0.9.0/src/finance_dev/models/getpositionsresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/getpredictionorderop.py +88 -0
- finance_dev-0.9.0/src/finance_dev/models/getpricetargetop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getquotesop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getratingsop.py +164 -0
- finance_dev-0.9.0/src/finance_dev/models/getratingsresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/getreportedfinancialsop.py +127 -0
- finance_dev-0.9.0/src/finance_dev/models/getrevenuebreakdownop.py +85 -0
- finance_dev-0.9.0/src/finance_dev/models/getrevenueestimatesop.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/getsecfilingsop.py +113 -0
- finance_dev-0.9.0/src/finance_dev/models/getsectortickersop.py +124 -0
- finance_dev-0.9.0/src/finance_dev/models/getsectorwisechangeop.py +84 -0
- finance_dev-0.9.0/src/finance_dev/models/getshortinterestop.py +334 -0
- finance_dev-0.9.0/src/finance_dev/models/getshortvolumeop.py +333 -0
- finance_dev-0.9.0/src/finance_dev/models/getsocialsentimentop.py +90 -0
- finance_dev-0.9.0/src/finance_dev/models/getspinoffsop.py +112 -0
- finance_dev-0.9.0/src/finance_dev/models/getstockaggregatesop.py +174 -0
- finance_dev-0.9.0/src/finance_dev/models/getstocklastquoteop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getstocklasttradeop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/getstockopencloseop.py +90 -0
- finance_dev-0.9.0/src/finance_dev/models/getstockpreviousdayop.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/getstockquotesop.py +177 -0
- finance_dev-0.9.0/src/finance_dev/models/getstocksnapshotsop.py +82 -0
- finance_dev-0.9.0/src/finance_dev/models/getstocksplitsop.py +243 -0
- finance_dev-0.9.0/src/finance_dev/models/getstocktradesop.py +177 -0
- finance_dev-0.9.0/src/finance_dev/models/getsupplychainop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/getsupportresistancelevelsop.py +90 -0
- finance_dev-0.9.0/src/finance_dev/models/getsymbolinfoop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/gettechnicalindicatorop.py +172 -0
- finance_dev-0.9.0/src/finance_dev/models/gettechnicalpatternsop.py +88 -0
- finance_dev-0.9.0/src/finance_dev/models/gettenderoffersop.py +112 -0
- finance_dev-0.9.0/src/finance_dev/models/gettickhistoryop.py +104 -0
- finance_dev-0.9.0/src/finance_dev/models/gettopgainersop.py +78 -0
- finance_dev-0.9.0/src/finance_dev/models/gettoplosersop.py +78 -0
- finance_dev-0.9.0/src/finance_dev/models/gettopmostactiveop.py +78 -0
- finance_dev-0.9.0/src/finance_dev/models/gettranscriptop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/gettreasuryyieldsop.py +157 -0
- finance_dev-0.9.0/src/finance_dev/models/getunifiedsnapshotop.py +223 -0
- finance_dev-0.9.0/src/finance_dev/models/getupgradesdowngradesop.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/getusaspendingop.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/getuseraccountsop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/getusptopatentsop.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/getvisaapplicationsop.py +73 -0
- finance_dev-0.9.0/src/finance_dev/models/historicalesgresponse.py +439 -0
- finance_dev-0.9.0/src/finance_dev/models/httpmetadata.py +24 -0
- finance_dev-0.9.0/src/finance_dev/models/incomestatement.py +296 -0
- finance_dev-0.9.0/src/finance_dev/models/incomestatementsresponse.py +61 -0
- finance_dev-0.9.0/src/finance_dev/models/indexbarresponse.py +194 -0
- finance_dev-0.9.0/src/finance_dev/models/indexbarsresponse.py +123 -0
- finance_dev-0.9.0/src/finance_dev/models/indexchartbarsresponse.py +213 -0
- finance_dev-0.9.0/src/finance_dev/models/indexgroupsresponse.py +78 -0
- finance_dev-0.9.0/src/finance_dev/models/indexlistresponse.py +95 -0
- finance_dev-0.9.0/src/finance_dev/models/indexsearchresponse.py +93 -0
- finance_dev-0.9.0/src/finance_dev/models/indicesbygroupresponse.py +93 -0
- finance_dev-0.9.0/src/finance_dev/models/indicesidentifiertype.py +28 -0
- finance_dev-0.9.0/src/finance_dev/models/indicesrealtimeindexinfo.py +67 -0
- finance_dev-0.9.0/src/finance_dev/models/indicesrealtimeindexvalue.py +157 -0
- finance_dev-0.9.0/src/finance_dev/models/indicesrealtimevaluesitem.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/indicesrealtimevaluesresponse.py +42 -0
- finance_dev-0.9.0/src/finance_dev/models/inflationexpectationsresponse.py +140 -0
- finance_dev-0.9.0/src/finance_dev/models/inflationresponse.py +132 -0
- finance_dev-0.9.0/src/finance_dev/models/insidertransaction.py +97 -0
- finance_dev-0.9.0/src/finance_dev/models/insidertransactionsresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/institutionalholding.py +77 -0
- finance_dev-0.9.0/src/finance_dev/models/institutionalownershipresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/institutionalportfolioresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/investmentthemeid.py +35 -0
- finance_dev-0.9.0/src/finance_dev/models/investmentthemeresponse.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/ipocalendarresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/ipoitem.py +93 -0
- finance_dev-0.9.0/src/finance_dev/models/listactiveordersop.py +87 -0
- finance_dev-0.9.0/src/finance_dev/models/listcategoriesop.py +79 -0
- finance_dev-0.9.0/src/finance_dev/models/listindexgroupsop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/listindicesbygroupop.py +58 -0
- finance_dev-0.9.0/src/finance_dev/models/listindicesop.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/listoptioncontractsop.py +66 -0
- finance_dev-0.9.0/src/finance_dev/models/listoptionexpirydatesop.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/listorderhistoryop.py +139 -0
- finance_dev-0.9.0/src/finance_dev/models/listpredictionordersop.py +134 -0
- finance_dev-0.9.0/src/finance_dev/models/listtranscriptsop.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/lobbyingresponse.py +166 -0
- finance_dev-0.9.0/src/finance_dev/models/logosearchresponse.py +152 -0
- finance_dev-0.9.0/src/finance_dev/models/logosyncresponse.py +277 -0
- finance_dev-0.9.0/src/finance_dev/models/marketbreadth.py +97 -0
- finance_dev-0.9.0/src/finance_dev/models/marketbreadthresponse.py +44 -0
- finance_dev-0.9.0/src/finance_dev/models/marketholiday.py +56 -0
- finance_dev-0.9.0/src/finance_dev/models/marketholidayresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/marketstatus.py +67 -0
- finance_dev-0.9.0/src/finance_dev/models/mergersandacquisitionsresponse.py +186 -0
- finance_dev-0.9.0/src/finance_dev/models/metricseriespoint.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/netinflow.py +81 -0
- finance_dev-0.9.0/src/finance_dev/models/netinflowresponse.py +44 -0
- finance_dev-0.9.0/src/finance_dev/models/newsitem.py +102 -0
- finance_dev-0.9.0/src/finance_dev/models/newslistresponse.py +128 -0
- finance_dev-0.9.0/src/finance_dev/models/newssentimentresponse.py +176 -0
- finance_dev-0.9.0/src/finance_dev/models/newstypeenum.py +16 -0
- finance_dev-0.9.0/src/finance_dev/models/optionchainsnapshotresponse.py +64 -0
- finance_dev-0.9.0/src/finance_dev/models/optioncontractsnapshotresponse.py +64 -0
- finance_dev-0.9.0/src/finance_dev/models/optioncontractsnapshotrow.py +164 -0
- finance_dev-0.9.0/src/finance_dev/models/optioncontractsresponse.py +131 -0
- finance_dev-0.9.0/src/finance_dev/models/optiondetailsdto.py +72 -0
- finance_dev-0.9.0/src/finance_dev/models/optionexpirydatesresponse.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/optionlasttraderesponse.py +169 -0
- finance_dev-0.9.0/src/finance_dev/models/optionopencloseresponse.py +97 -0
- finance_dev-0.9.0/src/finance_dev/models/optionpreviousdayresponse.py +89 -0
- finance_dev-0.9.0/src/finance_dev/models/optionquotesresponse.py +138 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsactivityresponse.py +265 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsnapshotcontractdetails.py +85 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsnapshotdaybar.py +107 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsnapshotgreeks.py +67 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsnapshotlastquote.py +116 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsnapshotlasttrade.py +102 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsnapshotunderlying.py +86 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsscreeneritem.py +151 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsunusualactivityresponse.py +62 -0
- finance_dev-0.9.0/src/finance_dev/models/optionsunusualactivitytrade.py +103 -0
- finance_dev-0.9.0/src/finance_dev/models/optiontradesresponse.py +132 -0
- finance_dev-0.9.0/src/finance_dev/models/orderrequesttimeinforceenum.py +29 -0
- finance_dev-0.9.0/src/finance_dev/models/ordersideenum.py +20 -0
- finance_dev-0.9.0/src/finance_dev/models/ordertypeenum.py +20 -0
- finance_dev-0.9.0/src/finance_dev/models/ordleg.py +162 -0
- finance_dev-0.9.0/src/finance_dev/models/ordresponse.py +202 -0
- finance_dev-0.9.0/src/finance_dev/models/ownershipdataresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/ownershiprecord.py +74 -0
- finance_dev-0.9.0/src/finance_dev/models/placeorderop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/placeordrequest_union.py +335 -0
- finance_dev-0.9.0/src/finance_dev/models/placepredictionorderop.py +114 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdbaseevent.py +62 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdbaseeventhit.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdbaseeventsearchresult.py +46 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdbaseeventwithevents.py +32 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdbatchhistoryrequest.py +16 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdbatchhistoryresponse.py +16 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdcategory.py +48 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdcontract.py +177 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdcontracthit.py +157 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdcontractsearchresult.py +46 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdevent.py +136 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdeventhit.py +73 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdeventsearchresult.py +46 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdeventwithcontracts.py +22 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdhistoryrequest.py +59 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdhistoryresponse.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/predmdtick.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/predordersapperror.py +78 -0
- finance_dev-0.9.0/src/finance_dev/models/predordersorder.py +267 -0
- finance_dev-0.9.0/src/finance_dev/models/predordersorderdetail.py +26 -0
- finance_dev-0.9.0/src/finance_dev/models/predordersorderpage.py +45 -0
- finance_dev-0.9.0/src/finance_dev/models/predordersorderreport.py +88 -0
- finance_dev-0.9.0/src/finance_dev/models/predordersplaceorderrequest.py +159 -0
- finance_dev-0.9.0/src/finance_dev/models/previeworderop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/previeworderresponse.py +127 -0
- finance_dev-0.9.0/src/finance_dev/models/pricetargetresponse.py +89 -0
- finance_dev-0.9.0/src/finance_dev/models/quotedata.py +49 -0
- finance_dev-0.9.0/src/finance_dev/models/quotesresponse.py +62 -0
- finance_dev-0.9.0/src/finance_dev/models/quotevalues.py +114 -0
- finance_dev-0.9.0/src/finance_dev/models/rating.py +193 -0
- finance_dev-0.9.0/src/finance_dev/models/ratingsaccuracy.py +242 -0
- finance_dev-0.9.0/src/finance_dev/models/replaceconfigwatchlistsop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/replaceorderop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/replaceordrequest_union.py +367 -0
- finance_dev-0.9.0/src/finance_dev/models/replaceordresponse.py +144 -0
- finance_dev-0.9.0/src/finance_dev/models/reportedbsitem.py +53 -0
- finance_dev-0.9.0/src/finance_dev/models/reportedfiling.py +110 -0
- finance_dev-0.9.0/src/finance_dev/models/reportedreport.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/reportingfrequency.py +16 -0
- finance_dev-0.9.0/src/finance_dev/models/revenuebreakdownaxis.py +52 -0
- finance_dev-0.9.0/src/finance_dev/models/revenuebreakdowndatapoint.py +58 -0
- finance_dev-0.9.0/src/finance_dev/models/revenuebreakdownentry.py +51 -0
- finance_dev-0.9.0/src/finance_dev/models/revenuebreakdowninner.py +75 -0
- finance_dev-0.9.0/src/finance_dev/models/revenueestimatesresponse.py +176 -0
- finance_dev-0.9.0/src/finance_dev/models/screenclause.py +70 -0
- finance_dev-0.9.0/src/finance_dev/models/screengroup.py +75 -0
- finance_dev-0.9.0/src/finance_dev/models/searchetbsymbolsop.py +40 -0
- finance_dev-0.9.0/src/finance_dev/models/searchindicesop.py +55 -0
- finance_dev-0.9.0/src/finance_dev/models/searchlogosop.py +158 -0
- finance_dev-0.9.0/src/finance_dev/models/searchmarketsymbolsop.py +80 -0
- finance_dev-0.9.0/src/finance_dev/models/searchop.py +232 -0
- finance_dev-0.9.0/src/finance_dev/models/searchsymbolitem.py +76 -0
- finance_dev-0.9.0/src/finance_dev/models/searchsymbolresponseitem.py +71 -0
- finance_dev-0.9.0/src/finance_dev/models/searchsymbolsop.py +77 -0
- finance_dev-0.9.0/src/finance_dev/models/secfiling.py +91 -0
- finance_dev-0.9.0/src/finance_dev/models/secfilingsresponse.py +39 -0
- finance_dev-0.9.0/src/finance_dev/models/sectoravgchange.py +50 -0
- finance_dev-0.9.0/src/finance_dev/models/security.py +59 -0
- finance_dev-0.9.0/src/finance_dev/models/securitytypeenum.py +16 -0
- finance_dev-0.9.0/src/finance_dev/models/shortinterestresponse.py +126 -0
- finance_dev-0.9.0/src/finance_dev/models/shortvolumeresponse.py +198 -0
- finance_dev-0.9.0/src/finance_dev/models/socialsentimentresponse.py +124 -0
- finance_dev-0.9.0/src/finance_dev/models/sortorderenum.py +13 -0
- finance_dev-0.9.0/src/finance_dev/models/spinoffsresponse.py +136 -0
- finance_dev-0.9.0/src/finance_dev/models/stockaggregatesresponse.py +92 -0
- finance_dev-0.9.0/src/finance_dev/models/stocklastquoteresponse.py +175 -0
- finance_dev-0.9.0/src/finance_dev/models/stocklasttraderesponse.py +169 -0
- finance_dev-0.9.0/src/finance_dev/models/stockohlcbar.py +85 -0
- finance_dev-0.9.0/src/finance_dev/models/stockopencloseresponse.py +109 -0
- finance_dev-0.9.0/src/finance_dev/models/stockpreviousdayresponse.py +86 -0
- finance_dev-0.9.0/src/finance_dev/models/stockquotesresponse.py +170 -0
- finance_dev-0.9.0/src/finance_dev/models/stockscreenerop.py +144 -0
- finance_dev-0.9.0/src/finance_dev/models/stockscreenerrequest.py +131 -0
- finance_dev-0.9.0/src/finance_dev/models/stockscreenerresponse.py +197 -0
- finance_dev-0.9.0/src/finance_dev/models/stocksnapshotsresponse.py +454 -0
- finance_dev-0.9.0/src/finance_dev/models/stocksplitsresponse.py +144 -0
- finance_dev-0.9.0/src/finance_dev/models/stocktradesresponse.py +164 -0
- finance_dev-0.9.0/src/finance_dev/models/supplychainresponse.py +158 -0
- finance_dev-0.9.0/src/finance_dev/models/supportresistancelevelsresponse.py +68 -0
- finance_dev-0.9.0/src/finance_dev/models/symboldetails.py +119 -0
- finance_dev-0.9.0/src/finance_dev/models/symbolerror.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/symbolinfo.py +183 -0
- finance_dev-0.9.0/src/finance_dev/models/synclogosop.py +146 -0
- finance_dev-0.9.0/src/finance_dev/models/technicalindicatorresponse.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/technicalindicatortype.py +21 -0
- finance_dev-0.9.0/src/finance_dev/models/technicalpatternsresponse.py +249 -0
- finance_dev-0.9.0/src/finance_dev/models/tenderofferidentifiertype.py +26 -0
- finance_dev-0.9.0/src/finance_dev/models/tenderoffersresponse.py +548 -0
- finance_dev-0.9.0/src/finance_dev/models/tickchartbars.py +104 -0
- finance_dev-0.9.0/src/finance_dev/models/tickresolution.py +20 -0
- finance_dev-0.9.0/src/finance_dev/models/timeinforceenum.py +26 -0
- finance_dev-0.9.0/src/finance_dev/models/tradeorderlegv2.py +164 -0
- finance_dev-0.9.0/src/finance_dev/models/tradeorderv2.py +434 -0
- finance_dev-0.9.0/src/finance_dev/models/transcriptresponse.py +162 -0
- finance_dev-0.9.0/src/finance_dev/models/transcriptsresponse.py +89 -0
- finance_dev-0.9.0/src/finance_dev/models/treasuryyieldsresponse.py +160 -0
- finance_dev-0.9.0/src/finance_dev/models/unifiedsnapshotresponse.py +308 -0
- finance_dev-0.9.0/src/finance_dev/models/updateconfigwatchlistbyidop.py +65 -0
- finance_dev-0.9.0/src/finance_dev/models/updatewatchlistrequest_union.py +134 -0
- finance_dev-0.9.0/src/finance_dev/models/upgradesdowngradesresponse.py +98 -0
- finance_dev-0.9.0/src/finance_dev/models/usaspendingresponse.py +222 -0
- finance_dev-0.9.0/src/finance_dev/models/usptopatentsresponse.py +134 -0
- finance_dev-0.9.0/src/finance_dev/models/visaapplicationsresponse.py +228 -0
- finance_dev-0.9.0/src/finance_dev/models/watchlist.py +68 -0
- finance_dev-0.9.0/src/finance_dev/models/watchlistrequest.py +43 -0
- finance_dev-0.9.0/src/finance_dev/models/watchlistresponse.py +44 -0
- finance_dev-0.9.0/src/finance_dev/news_sdk.py +829 -0
- finance_dev-0.9.0/src/finance_dev/options.py +3443 -0
- finance_dev-0.9.0/src/finance_dev/orders.py +1907 -0
- finance_dev-0.9.0/src/finance_dev/ownership.py +1386 -0
- finance_dev-0.9.0/src/finance_dev/predictions.py +29 -0
- finance_dev-0.9.0/src/finance_dev/predictions_orders.py +852 -0
- finance_dev-0.9.0/src/finance_dev/py.typed +1 -0
- finance_dev-0.9.0/src/finance_dev/sdk.py +347 -0
- finance_dev-0.9.0/src/finance_dev/sdkconfiguration.py +50 -0
- finance_dev-0.9.0/src/finance_dev/signals.py +338 -0
- finance_dev-0.9.0/src/finance_dev/stocks.py +3131 -0
- finance_dev-0.9.0/src/finance_dev/technicalanalysis_sdk.py +1137 -0
- finance_dev-0.9.0/src/finance_dev/types/__init__.py +25 -0
- finance_dev-0.9.0/src/finance_dev/types/base64fileinput.py +44 -0
- finance_dev-0.9.0/src/finance_dev/types/basemodel.py +78 -0
- finance_dev-0.9.0/src/finance_dev/utils/__init__.py +181 -0
- finance_dev-0.9.0/src/finance_dev/utils/annotations.py +80 -0
- finance_dev-0.9.0/src/finance_dev/utils/datetimes.py +42 -0
- finance_dev-0.9.0/src/finance_dev/utils/dynamic_imports.py +55 -0
- finance_dev-0.9.0/src/finance_dev/utils/enums.py +135 -0
- finance_dev-0.9.0/src/finance_dev/utils/eventstreaming.py +327 -0
- finance_dev-0.9.0/src/finance_dev/utils/forms.py +240 -0
- finance_dev-0.9.0/src/finance_dev/utils/headers.py +137 -0
- finance_dev-0.9.0/src/finance_dev/utils/logger.py +23 -0
- finance_dev-0.9.0/src/finance_dev/utils/metadata.py +120 -0
- finance_dev-0.9.0/src/finance_dev/utils/queryparams.py +218 -0
- finance_dev-0.9.0/src/finance_dev/utils/requestbodies.py +68 -0
- finance_dev-0.9.0/src/finance_dev/utils/retries.py +373 -0
- finance_dev-0.9.0/src/finance_dev/utils/security.py +199 -0
- finance_dev-0.9.0/src/finance_dev/utils/serializers.py +327 -0
- finance_dev-0.9.0/src/finance_dev/utils/unmarshal_json_response.py +39 -0
- finance_dev-0.9.0/src/finance_dev/utils/url.py +155 -0
- finance_dev-0.9.0/src/finance_dev/utils/values.py +143 -0
- finance_dev-0.9.0/src/finance_dev/watchlist_sdk.py +1583 -0
- finance_dev-0.9.0/src/finance_dev/websocket/__init__.py +57 -0
- finance_dev-0.9.0/src/finance_dev/websocket/account.py +5 -0
- finance_dev-0.9.0/src/finance_dev/websocket/auth.py +124 -0
- finance_dev-0.9.0/src/finance_dev/websocket/chart.py +5 -0
- finance_dev-0.9.0/src/finance_dev/websocket/codec.py +66 -0
- finance_dev-0.9.0/src/finance_dev/websocket/config.py +52 -0
- finance_dev-0.9.0/src/finance_dev/websocket/errors.py +54 -0
- finance_dev-0.9.0/src/finance_dev/websocket/market.py +5 -0
- finance_dev-0.9.0/src/finance_dev/websocket/models/__init__.py +52 -0
- finance_dev-0.9.0/src/finance_dev/websocket/models/account.py +60 -0
- finance_dev-0.9.0/src/finance_dev/websocket/models/chart.py +44 -0
- finance_dev-0.9.0/src/finance_dev/websocket/models/common.py +85 -0
- finance_dev-0.9.0/src/finance_dev/websocket/models/market.py +113 -0
- finance_dev-0.9.0/src/finance_dev/websocket/resources.py +327 -0
- finance_dev-0.9.0/src/finance_dev/websocket/sdk.py +13 -0
- finance_dev-0.9.0/src/finance_dev/websocket/transport/async_connection.py +493 -0
- finance_dev-0.9.0/src/finance_dev/websocket/transport/base.py +78 -0
- finance_dev-0.9.0/src/finance_dev/websocket/transport/sync_connection.py +470 -0
- finance_dev-0.9.0/src/finance_dev.egg-info/PKG-INFO +913 -0
- finance_dev-0.9.0/src/finance_dev.egg-info/SOURCES.txt +517 -0
- finance_dev-0.9.0/src/finance_dev.egg-info/dependency_links.txt +1 -0
- finance_dev-0.9.0/src/finance_dev.egg-info/requires.txt +5 -0
- finance_dev-0.9.0/src/finance_dev.egg-info/top_level.txt +1 -0
- finance_dev-0.9.0/tests/test_accounts.py +132 -0
- finance_dev-0.9.0/tests/test_alternativedata.py +439 -0
- finance_dev-0.9.0/tests/test_analytics.py +565 -0
- finance_dev-0.9.0/tests/test_basicfinancials_validation.py +39 -0
- finance_dev-0.9.0/tests/test_calendar.py +218 -0
- finance_dev-0.9.0/tests/test_chart.py +548 -0
- finance_dev-0.9.0/tests/test_client.py +14 -0
- finance_dev-0.9.0/tests/test_company.py +204 -0
- finance_dev-0.9.0/tests/test_corporateactions.py +208 -0
- finance_dev-0.9.0/tests/test_economy.py +155 -0
- finance_dev-0.9.0/tests/test_estimates.py +355 -0
- finance_dev-0.9.0/tests/test_etf.py +196 -0
- finance_dev-0.9.0/tests/test_filings.py +89 -0
- finance_dev-0.9.0/tests/test_financials.py +470 -0
- finance_dev-0.9.0/tests/test_history.py +75 -0
- finance_dev-0.9.0/tests/test_indices.py +288 -0
- finance_dev-0.9.0/tests/test_logos.py +60 -0
- finance_dev-0.9.0/tests/test_market.py +396 -0
- finance_dev-0.9.0/tests/test_markets.py +155 -0
- finance_dev-0.9.0/tests/test_news_sdk.py +136 -0
- finance_dev-0.9.0/tests/test_options.py +400 -0
- finance_dev-0.9.0/tests/test_orders.py +909 -0
- finance_dev-0.9.0/tests/test_ownership.py +191 -0
- finance_dev-0.9.0/tests/test_predictions_orders.py +177 -0
- finance_dev-0.9.0/tests/test_signals.py +49 -0
- finance_dev-0.9.0/tests/test_stocks.py +269 -0
- finance_dev-0.9.0/tests/test_technicalanalysis_sdk.py +196 -0
- finance_dev-0.9.0/tests/test_watchlist_sdk.py +594 -0
|
@@ -0,0 +1,913 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: finance_dev
|
|
3
|
+
Version: 0.9.0
|
|
4
|
+
Summary: Python Client SDK to interact with finance.dev.
|
|
5
|
+
Author: Speakeasy
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: httpcore>=1.0.9
|
|
9
|
+
Requires-Dist: httpx>=0.28.1
|
|
10
|
+
Requires-Dist: jsonpath-python>=1.0.6
|
|
11
|
+
Requires-Dist: pydantic>=2.11.2
|
|
12
|
+
Requires-Dist: websockets<18.0,>=15.0
|
|
13
|
+
|
|
14
|
+
# finance-dev
|
|
15
|
+
|
|
16
|
+
Developer-friendly & type-safe Python SDK specifically catered to leverage [finance.dev](https://finance.dev) API.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<!-- Start Summary [summary] -->
|
|
20
|
+
## Summary
|
|
21
|
+
|
|
22
|
+
Aries API — OpenAPI Specification: OpenAPI Specification for the Aries trading platform API.
|
|
23
|
+
|
|
24
|
+
# Authentication
|
|
25
|
+
|
|
26
|
+
Learn how to authenticate with the Aries API using OAuth2 and manage access tokens in your SDK.
|
|
27
|
+
|
|
28
|
+
## Overview
|
|
29
|
+
|
|
30
|
+
The Aries API uses **OAuth2 with Bearer tokens** (JWT format) for authentication. All API requests require a valid access token in the `Authorization` header:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Authorization: Bearer <access_token>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Providing Client ID and Client Secret (SDK)
|
|
37
|
+
|
|
38
|
+
When using the generated SDK, provide your **Client ID** and **Client Secret** when you create the API client (e.g. in the constructor or security options). The SDK will use these to obtain and refresh the access token internally; you do not need to manage tokens yourself.
|
|
39
|
+
|
|
40
|
+
Obtain your OAuth2 credentials from the Aries platform (e.g. Client Center / Manage Account at https://app.aries.com):
|
|
41
|
+
|
|
42
|
+
- **Client ID** – Your application identifier (pass to SDK client)
|
|
43
|
+
- **Client Secret** – Your application secret key (pass to SDK client; use PKCE for public clients where secret cannot be stored)
|
|
44
|
+
|
|
45
|
+
## Authentication Flow
|
|
46
|
+
|
|
47
|
+
### 1. Authorization Code Flow
|
|
48
|
+
|
|
49
|
+
For server-side or confidential clients:
|
|
50
|
+
|
|
51
|
+
1. **Redirect the user** to the authorization URL to sign in and consent:
|
|
52
|
+
- **URL:** `https://app.aries.com/oauth2/authorize`
|
|
53
|
+
- **Query params:** `response_type=code`, `client_id`, `redirect_uri`, `scope`, `state`
|
|
54
|
+
|
|
55
|
+
2. **Exchange the code for tokens** (after user is redirected back with `?code=.`):
|
|
56
|
+
- **POST** `https://api.aries.com/v1/oauth2/token`
|
|
57
|
+
- **Body:** `grant_type=authorization_code`, `code`, `redirect_uri`, `client_id`, `client_secret`
|
|
58
|
+
- Response includes `access_token` and `refresh_token`
|
|
59
|
+
|
|
60
|
+
3. **Call the API** with the access token: `Authorization: Bearer <access_token>`
|
|
61
|
+
|
|
62
|
+
### 2. PKCE Flow
|
|
63
|
+
|
|
64
|
+
For SPAs and mobile apps (public clients that cannot store `client_secret`):
|
|
65
|
+
|
|
66
|
+
1. Generate a **code_verifier** (random string) and **code_challenge** = BASE64URL(SHA256(code_verifier)).
|
|
67
|
+
2. **Redirect the user** to `https://app.aries.com/oauth2/authorize` with `code_challenge`, `code_challenge_method=S256`, plus `client_id`, `redirect_uri`, `scope`, `state`.
|
|
68
|
+
3. **Exchange the code** at POST `https://api.aries.com/v1/oauth2/token` with `grant_type=authorization_code`, `code`, `redirect_uri`, `client_id`, `code_verifier` (no client_secret).
|
|
69
|
+
4. Use the returned `access_token` as Bearer.
|
|
70
|
+
|
|
71
|
+
### 3. MFA Verification
|
|
72
|
+
|
|
73
|
+
If the user has MFA enabled, the authorize step may return `is_mfa: true` and a `next_step_auth_id`. Call **POST** `https://api.aries.com/v1/oauth2/authorize/mfa` with `next_step_auth_id` and `verification_code` (6-digit code). Then continue with **POST** `/v1/oauth2/authorize/confirm` to get the authorization code, and exchange it at `/v1/oauth2/token`.
|
|
74
|
+
|
|
75
|
+
## Token Management
|
|
76
|
+
|
|
77
|
+
- **Refresh when expired:** POST `https://api.aries.com/v1/oauth2/token` with `grant_type=refresh_token`, `client_id`, `client_secret`, `refresh_token`.
|
|
78
|
+
- **Using a Bearer token directly:** If you already have an access token, set the header `Authorization: Bearer <access_token>` on every request. The SDK can accept a pre-obtained token and use it until it expires.
|
|
79
|
+
|
|
80
|
+
## OAuth2 Scopes
|
|
81
|
+
|
|
82
|
+
Request only the scopes your application needs. Available scopes:
|
|
83
|
+
|
|
84
|
+
| Scope | Description |
|
|
85
|
+
|-------|-------------|
|
|
86
|
+
| `user:information` | View user profile and personal details |
|
|
87
|
+
| `watchlist:information` | View your watchlists and their symbols |
|
|
88
|
+
| `watchlist:management` | Create, update, replace, and delete your watchlists |
|
|
89
|
+
| `account:information` | View account balances, positions, and transaction history |
|
|
90
|
+
| `order:execution` | Place, modify, and cancel orders |
|
|
91
|
+
| `order:information` | View order history and status |
|
|
92
|
+
| `position:information` | View current positions and holdings |
|
|
93
|
+
| `market:information` | Access live and historical market data |
|
|
94
|
+
| `calendar:information` | Access earnings, economic, and market schedule data |
|
|
95
|
+
| `options:information` | Access options chains and expiration data |
|
|
96
|
+
| `analytics:information` | View analytics, ratings, and market insights |
|
|
97
|
+
| `market:supplemental` | News, company profiles, financials, filings, ETF data, technical analysis |
|
|
98
|
+
|
|
99
|
+
Specify multiple scopes as a space-separated string, e.g. `account:information order:execution market:information`.
|
|
100
|
+
|
|
101
|
+
## Security Best Practices
|
|
102
|
+
|
|
103
|
+
- **Store credentials securely** – Use environment variables or a secrets manager for `client_id` and `client_secret`. Never hardcode them.
|
|
104
|
+
- **Handle token expiration** – Check for 401 responses and refresh the token using the refresh_token, then retry the request.
|
|
105
|
+
- **Use HTTPS** – All authorization and token endpoints must be called over HTTPS.
|
|
106
|
+
- **Validate state** – When using the authorization code flow, validate the `state` parameter on the callback to prevent CSRF.
|
|
107
|
+
|
|
108
|
+
## Error Handling
|
|
109
|
+
|
|
110
|
+
- **400 Bad Request** – Invalid or missing parameters, validation failures, or malformed JSON. Response bodies follow the same patterns as other errors (flat `error` string, optional `codes`, nested `error` object, or rarely no body).
|
|
111
|
+
|
|
112
|
+
- **401 Unauthorized** – Invalid or expired access token; refresh the token or re-authenticate. JSON bodies are not identical on every route: you may see a flat `error` string (sometimes with `codes`), a nested `error` object (`type`, `code`, `message`), or rarely an empty body
|
|
113
|
+
|
|
114
|
+
- **403 Forbidden** – Insufficient scope or permissions for the requested resource. Error JSON may be flat or nested, like 400/401.
|
|
115
|
+
|
|
116
|
+
- **404 Not Found** – Resource does not exist or is not visible. Error JSON may be flat or nested.
|
|
117
|
+
|
|
118
|
+
- **500 / 5xx** – Server or upstream failure; retry with backoff. Do not depend on a single error JSON shape; some responses may have no body.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
Endpoints in this spec: health, OAuth2 (authorize, confirm, mfa, token), users, accounts, orders, market data, watchlist, chart, analytics, calendars, company, economy, financials, indices, options, news, and supplemental data.
|
|
124
|
+
<!-- End Summary [summary] -->
|
|
125
|
+
|
|
126
|
+
<!-- Start Table of Contents [toc] -->
|
|
127
|
+
## Table of Contents
|
|
128
|
+
<!-- $toc-max-depth=2 -->
|
|
129
|
+
* [finance-dev](#finance-dev)
|
|
130
|
+
* [Authentication](#authentication)
|
|
131
|
+
* [Overview](#overview)
|
|
132
|
+
* [Providing Client ID and Client Secret (SDK)](#providing-client-id-and-client-secret-sdk)
|
|
133
|
+
* [Authentication Flow](#authentication-flow)
|
|
134
|
+
* [Token Management](#token-management)
|
|
135
|
+
* [OAuth2 Scopes](#oauth2-scopes)
|
|
136
|
+
* [Security Best Practices](#security-best-practices)
|
|
137
|
+
* [Error Handling](#error-handling)
|
|
138
|
+
* [SDK Installation](#sdk-installation)
|
|
139
|
+
* [IDE Support](#ide-support)
|
|
140
|
+
* [SDK Example Usage](#sdk-example-usage)
|
|
141
|
+
* [Authentication](#authentication-1)
|
|
142
|
+
* [Available Resources and Operations](#available-resources-and-operations)
|
|
143
|
+
* [Pagination](#pagination)
|
|
144
|
+
* [Retries](#retries)
|
|
145
|
+
* [Error Handling](#error-handling-1)
|
|
146
|
+
* [Server Selection](#server-selection)
|
|
147
|
+
* [Custom HTTP Client](#custom-http-client)
|
|
148
|
+
* [Resource Management](#resource-management)
|
|
149
|
+
* [Debugging](#debugging)
|
|
150
|
+
* [WebSocket streaming](#websocket-streaming)
|
|
151
|
+
* [Development](#development)
|
|
152
|
+
* [Maturity](#maturity)
|
|
153
|
+
* [Contributions](#contributions)
|
|
154
|
+
|
|
155
|
+
<!-- End Table of Contents [toc] -->
|
|
156
|
+
|
|
157
|
+
<!-- Start SDK Installation [installation] -->
|
|
158
|
+
## SDK Installation
|
|
159
|
+
|
|
160
|
+
> [!NOTE]
|
|
161
|
+
> **Python version upgrade policy**
|
|
162
|
+
>
|
|
163
|
+
> Once a Python version reaches its [official end of life date](https://devguide.python.org/versions/), a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated.
|
|
164
|
+
|
|
165
|
+
The SDK can be installed with *uv*, *pip*, or *poetry* package managers.
|
|
166
|
+
|
|
167
|
+
### uv
|
|
168
|
+
|
|
169
|
+
*uv* is a fast Python package installer and resolver, designed as a drop-in replacement for pip and pip-tools. It's recommended for its speed and modern Python tooling capabilities.
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
uv add finance_dev
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### PIP
|
|
176
|
+
|
|
177
|
+
*PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
pip install finance_dev
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Poetry
|
|
184
|
+
|
|
185
|
+
*Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies.
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
poetry add finance_dev
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Shell and script usage with `uv`
|
|
192
|
+
|
|
193
|
+
You can use this SDK in a Python shell with [uv](https://docs.astral.sh/uv/) and the `uvx` command that comes with it like so:
|
|
194
|
+
|
|
195
|
+
```shell
|
|
196
|
+
uvx --from finance_dev python
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
It's also possible to write a standalone Python script without needing to set up a whole project like so:
|
|
200
|
+
|
|
201
|
+
```python
|
|
202
|
+
#!/usr/bin/env -S uv run --script
|
|
203
|
+
# /// script
|
|
204
|
+
# requires-python = ">=3.10"
|
|
205
|
+
# dependencies = [
|
|
206
|
+
# "finance_dev",
|
|
207
|
+
# ]
|
|
208
|
+
# ///
|
|
209
|
+
|
|
210
|
+
from finance_dev import FinanceDev
|
|
211
|
+
|
|
212
|
+
sdk = FinanceDev(
|
|
213
|
+
# SDK arguments
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
# Rest of script here...
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Once that is saved to a file, you can run it with `uv run script.py` where
|
|
220
|
+
`script.py` can be replaced with the actual file name.
|
|
221
|
+
<!-- End SDK Installation [installation] -->
|
|
222
|
+
|
|
223
|
+
<!-- Start IDE Support [idesupport] -->
|
|
224
|
+
## IDE Support
|
|
225
|
+
|
|
226
|
+
### PyCharm
|
|
227
|
+
|
|
228
|
+
Generally, the SDK will work well with most IDEs out of the box. However, when using PyCharm, you can enjoy much better integration with Pydantic by installing an additional plugin.
|
|
229
|
+
|
|
230
|
+
- [PyCharm Pydantic Plugin](https://docs.pydantic.dev/latest/integrations/pycharm/)
|
|
231
|
+
<!-- End IDE Support [idesupport] -->
|
|
232
|
+
|
|
233
|
+
<!-- Start SDK Example Usage [usage] -->
|
|
234
|
+
## SDK Example Usage
|
|
235
|
+
|
|
236
|
+
### Example
|
|
237
|
+
|
|
238
|
+
```python
|
|
239
|
+
# Synchronous Example
|
|
240
|
+
from finance_dev import FinanceDev, models
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
with FinanceDev(
|
|
244
|
+
security=models.Security(
|
|
245
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
246
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
247
|
+
),
|
|
248
|
+
) as fd_client:
|
|
249
|
+
|
|
250
|
+
res = fd_client.accounts.get_account_positions(id="TEST-ACCOUNT-001")
|
|
251
|
+
|
|
252
|
+
assert res.get_positions_response is not None
|
|
253
|
+
|
|
254
|
+
# Handle response
|
|
255
|
+
print(res.get_positions_response)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
</br>
|
|
259
|
+
|
|
260
|
+
The same SDK client can also be used to make asynchronous requests by importing asyncio.
|
|
261
|
+
|
|
262
|
+
```python
|
|
263
|
+
# Asynchronous Example
|
|
264
|
+
import asyncio
|
|
265
|
+
from finance_dev import FinanceDev, models
|
|
266
|
+
|
|
267
|
+
async def main():
|
|
268
|
+
|
|
269
|
+
async with FinanceDev(
|
|
270
|
+
security=models.Security(
|
|
271
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
272
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
273
|
+
),
|
|
274
|
+
) as fd_client:
|
|
275
|
+
|
|
276
|
+
res = await fd_client.accounts.get_account_positions_async(id="TEST-ACCOUNT-001")
|
|
277
|
+
|
|
278
|
+
assert res.get_positions_response is not None
|
|
279
|
+
|
|
280
|
+
# Handle response
|
|
281
|
+
print(res.get_positions_response)
|
|
282
|
+
|
|
283
|
+
asyncio.run(main())
|
|
284
|
+
```
|
|
285
|
+
<!-- End SDK Example Usage [usage] -->
|
|
286
|
+
|
|
287
|
+
<!-- Start Authentication [security] -->
|
|
288
|
+
## Authentication
|
|
289
|
+
|
|
290
|
+
### Per-Client Security Schemes
|
|
291
|
+
|
|
292
|
+
This SDK supports the following security scheme globally:
|
|
293
|
+
|
|
294
|
+
| Name | Type | Scheme |
|
|
295
|
+
| ----------------------------------------------- | ------ | ------------------------------ |
|
|
296
|
+
| `client_id`<br/>`client_secret`<br/>`token_url` | oauth2 | OAuth2 Client Credentials Flow |
|
|
297
|
+
|
|
298
|
+
You can set the security parameters through the `security` optional parameter when initializing the SDK client instance. For example:
|
|
299
|
+
```python
|
|
300
|
+
from finance_dev import FinanceDev, models
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
with FinanceDev(
|
|
304
|
+
security=models.Security(
|
|
305
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
306
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
307
|
+
),
|
|
308
|
+
) as fd_client:
|
|
309
|
+
|
|
310
|
+
res = fd_client.accounts.get_account_positions(id="TEST-ACCOUNT-001")
|
|
311
|
+
|
|
312
|
+
assert res.get_positions_response is not None
|
|
313
|
+
|
|
314
|
+
# Handle response
|
|
315
|
+
print(res.get_positions_response)
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
<!-- End Authentication [security] -->
|
|
319
|
+
|
|
320
|
+
<!-- Start Available Resources and Operations [operations] -->
|
|
321
|
+
## Available Resources and Operations
|
|
322
|
+
|
|
323
|
+
<details open>
|
|
324
|
+
<summary>Available methods</summary>
|
|
325
|
+
|
|
326
|
+
### [Accounts](docs/sdks/accounts/README.md)
|
|
327
|
+
|
|
328
|
+
* [get_account_positions](docs/sdks/accounts/README.md#get_account_positions) - Get Account Positions
|
|
329
|
+
* [get_account_balance](docs/sdks/accounts/README.md#get_account_balance) - Get Account Balance
|
|
330
|
+
* [get_user_accounts](docs/sdks/accounts/README.md#get_user_accounts) - Get User Accounts
|
|
331
|
+
|
|
332
|
+
### [AlternativeData](docs/sdks/alternativedata/README.md)
|
|
333
|
+
|
|
334
|
+
* [get_bank_branches](docs/sdks/alternativedata/README.md#get_bank_branches) - Get Bank Branch
|
|
335
|
+
* [get_congressional_trading](docs/sdks/alternativedata/README.md#get_congressional_trading) - Get Congressional Trading
|
|
336
|
+
* [get_covid19_us_cases](docs/sdks/alternativedata/README.md#get_covid19_us_cases) - Get COVID-19 US
|
|
337
|
+
* [get_earnings_call_live](docs/sdks/alternativedata/README.md#get_earnings_call_live) - Get Earnings Call Live
|
|
338
|
+
* [get_earnings_quality_score](docs/sdks/alternativedata/README.md#get_earnings_quality_score) - Get Earnings Quality Score
|
|
339
|
+
* [get_company_esg](docs/sdks/alternativedata/README.md#get_company_esg) - Get Company ESG
|
|
340
|
+
* [get_fda_advisory_committee_calendar](docs/sdks/alternativedata/README.md#get_fda_advisory_committee_calendar) - Get FDA Advisory Committee Calendar
|
|
341
|
+
* [get_historical_esg](docs/sdks/alternativedata/README.md#get_historical_esg) - Get Historical ESG
|
|
342
|
+
* [get_investment_theme](docs/sdks/alternativedata/README.md#get_investment_theme) - Get Investment Theme
|
|
343
|
+
* [get_lobbying](docs/sdks/alternativedata/README.md#get_lobbying) - Get Lobbying
|
|
344
|
+
* [get_company_presentation](docs/sdks/alternativedata/README.md#get_company_presentation) - Get Company Presentation
|
|
345
|
+
* [get_social_sentiment](docs/sdks/alternativedata/README.md#get_social_sentiment) - Get Social Sentiment
|
|
346
|
+
* [get_supply_chain](docs/sdks/alternativedata/README.md#get_supply_chain) - Get Supply Chain
|
|
347
|
+
* [get_transcript](docs/sdks/alternativedata/README.md#get_transcript) - Get Transcript by ID
|
|
348
|
+
* [list_transcripts](docs/sdks/alternativedata/README.md#list_transcripts) - Get Transcripts List
|
|
349
|
+
* [get_usa_spending](docs/sdks/alternativedata/README.md#get_usa_spending) - Get USA Spending
|
|
350
|
+
* [get_uspto_patents](docs/sdks/alternativedata/README.md#get_uspto_patents) - Get USPTO Patent
|
|
351
|
+
* [get_visa_applications](docs/sdks/alternativedata/README.md#get_visa_applications) - Get Visa Application (H1-B)
|
|
352
|
+
|
|
353
|
+
### [Analytics](docs/sdks/analytics/README.md)
|
|
354
|
+
|
|
355
|
+
* [get_analyst_insights](docs/sdks/analytics/README.md#get_analyst_insights) - Get Analyst Insights
|
|
356
|
+
* [get_market_breadth](docs/sdks/analytics/README.md#get_market_breadth) - Get Market Breadth
|
|
357
|
+
* [get_net_inflow](docs/sdks/analytics/README.md#get_net_inflow) - Get Net Inflow
|
|
358
|
+
* [get_ratings](docs/sdks/analytics/README.md#get_ratings) - Get Analyst Ratings
|
|
359
|
+
* [get_sector_tickers](docs/sdks/analytics/README.md#get_sector_tickers) - Get Sector Tickers
|
|
360
|
+
* [get_sector_wise_change](docs/sdks/analytics/README.md#get_sector_wise_change) - Get Sector-wise Change
|
|
361
|
+
* [get_top_gainers](docs/sdks/analytics/README.md#get_top_gainers) - Get Top Gaining Stocks
|
|
362
|
+
* [get_top_losers](docs/sdks/analytics/README.md#get_top_losers) - Get Top Losing Stocks
|
|
363
|
+
* [get_top_most_active](docs/sdks/analytics/README.md#get_top_most_active) - Get Most Active Stocks
|
|
364
|
+
* [get_options_et_fs_top_volume](docs/sdks/analytics/README.md#get_options_et_fs_top_volume) - Get Top ETF Options by Volume
|
|
365
|
+
* [get_options_stocks_top_gainers](docs/sdks/analytics/README.md#get_options_stocks_top_gainers) - Get Top Stock Options by Gains
|
|
366
|
+
* [get_options_stocks_top_volume](docs/sdks/analytics/README.md#get_options_stocks_top_volume) - Get Top Stock Options by Volume
|
|
367
|
+
* [stock_screener](docs/sdks/analytics/README.md#stock_screener) - Stock Screener
|
|
368
|
+
|
|
369
|
+
### [Calendar](docs/sdks/calendar/README.md)
|
|
370
|
+
|
|
371
|
+
* [get_conference_calls](docs/sdks/calendar/README.md#get_conference_calls) - Get Conference Calls
|
|
372
|
+
* [get_earnings_calendar](docs/sdks/calendar/README.md#get_earnings_calendar) - Get Earnings Calendar
|
|
373
|
+
* [get_economics_calendar](docs/sdks/calendar/README.md#get_economics_calendar) - Get Economics Calendar
|
|
374
|
+
* [get_historical_data](docs/sdks/calendar/README.md#get_historical_data) - Get Historical Economic Data
|
|
375
|
+
* [get_mergers_and_acquisitions](docs/sdks/calendar/README.md#get_mergers_and_acquisitions) - Get Mergers & Acquisitions
|
|
376
|
+
|
|
377
|
+
### [Chart](docs/sdks/chart/README.md)
|
|
378
|
+
|
|
379
|
+
* [get_chart_config](docs/sdks/chart/README.md#get_chart_config) - Get Chart Configuration
|
|
380
|
+
* [get_chart_history](docs/sdks/chart/README.md#get_chart_history) - Get Historical Chart Data
|
|
381
|
+
* [get_quotes](docs/sdks/chart/README.md#get_quotes) - Get Real-Time Quotes
|
|
382
|
+
* [search_symbols](docs/sdks/chart/README.md#search_symbols) - Search Symbols
|
|
383
|
+
* [get_symbol_info](docs/sdks/chart/README.md#get_symbol_info) - Get Symbol Information
|
|
384
|
+
* [get_tick_history](docs/sdks/chart/README.md#get_tick_history) - Get Tick-Based Chart Data
|
|
385
|
+
* [get_chart_time](docs/sdks/chart/README.md#get_chart_time) - Get Server Time
|
|
386
|
+
|
|
387
|
+
### [Company](docs/sdks/company/README.md)
|
|
388
|
+
|
|
389
|
+
* [get_company_executives](docs/sdks/company/README.md#get_company_executives) - Get Company Executives
|
|
390
|
+
* [get_company_metrics](docs/sdks/company/README.md#get_company_metrics) - Get Company Financial Metrics
|
|
391
|
+
* [get_company_peers](docs/sdks/company/README.md#get_company_peers) - Get Company Peers
|
|
392
|
+
* [get_company_profile](docs/sdks/company/README.md#get_company_profile) - Get Company Profile
|
|
393
|
+
|
|
394
|
+
### [CorporateActions](docs/sdks/corporateactions/README.md)
|
|
395
|
+
|
|
396
|
+
* [get_dividends](docs/sdks/corporateactions/README.md#get_dividends) - Get Dividend History
|
|
397
|
+
* [get_ipo_calendar](docs/sdks/corporateactions/README.md#get_ipo_calendar) - Get IPO Calendar
|
|
398
|
+
* [get_spinoffs](docs/sdks/corporateactions/README.md#get_spinoffs) - Get Corporate Spinoffs
|
|
399
|
+
* [get_tender_offers](docs/sdks/corporateactions/README.md#get_tender_offers) - Get Tender Offers
|
|
400
|
+
* [get_stock_splits](docs/sdks/corporateactions/README.md#get_stock_splits) - Get Stock Split History
|
|
401
|
+
|
|
402
|
+
### [Economy](docs/sdks/economy/README.md)
|
|
403
|
+
|
|
404
|
+
* [get_inflation](docs/sdks/economy/README.md#get_inflation) - Get Latest Inflation Data
|
|
405
|
+
* [get_inflation_expectations](docs/sdks/economy/README.md#get_inflation_expectations) - Get Latest Inflation Expectations
|
|
406
|
+
* [get_treasury_yields](docs/sdks/economy/README.md#get_treasury_yields) - Get Latest Treasury Yields
|
|
407
|
+
|
|
408
|
+
### [Estimates](docs/sdks/estimates/README.md)
|
|
409
|
+
|
|
410
|
+
* [get_earnings_surprises](docs/sdks/estimates/README.md#get_earnings_surprises) - Get Earnings Surprises
|
|
411
|
+
* [get_ebit_estimates](docs/sdks/estimates/README.md#get_ebit_estimates) - Get EBIT Estimates
|
|
412
|
+
* [get_ebitda_estimates](docs/sdks/estimates/README.md#get_ebitda_estimates) - Get EBITDA Estimates
|
|
413
|
+
* [get_eps_estimates](docs/sdks/estimates/README.md#get_eps_estimates) - Get EPS Estimates
|
|
414
|
+
* [get_price_target](docs/sdks/estimates/README.md#get_price_target) - Get Analyst Price Targets
|
|
415
|
+
* [get_revenue_estimates](docs/sdks/estimates/README.md#get_revenue_estimates) - Get Revenue Estimates
|
|
416
|
+
* [get_upgrades_downgrades](docs/sdks/estimates/README.md#get_upgrades_downgrades) - Get Analyst Upgrades & Downgrades
|
|
417
|
+
|
|
418
|
+
### [Etf](docs/sdks/etf/README.md)
|
|
419
|
+
|
|
420
|
+
* [get_etf_country_allocation](docs/sdks/etf/README.md#get_etf_country_allocation) - Get ETF Country Allocation
|
|
421
|
+
* [get_etf_holdings](docs/sdks/etf/README.md#get_etf_holdings) - Get ETF Holdings
|
|
422
|
+
* [get_etf_profile](docs/sdks/etf/README.md#get_etf_profile) - Get ETF Profile
|
|
423
|
+
* [get_etf_sector_allocation](docs/sdks/etf/README.md#get_etf_sector_allocation) - Get ETF Sector Allocation
|
|
424
|
+
|
|
425
|
+
### [Filings](docs/sdks/filings/README.md)
|
|
426
|
+
|
|
427
|
+
* [get_sec_filings](docs/sdks/filings/README.md#get_sec_filings) - Get SEC Filings
|
|
428
|
+
* [get_filings_similarity_index](docs/sdks/filings/README.md#get_filings_similarity_index) - Get Filings Similarity Index
|
|
429
|
+
|
|
430
|
+
### [Financials](docs/sdks/financials/README.md)
|
|
431
|
+
|
|
432
|
+
* [get_cash_flow_statements](docs/sdks/financials/README.md#get_cash_flow_statements) - Get Cash Flow Statements
|
|
433
|
+
* [get_income_statements](docs/sdks/financials/README.md#get_income_statements) - Get Income Statements
|
|
434
|
+
* [get_financial_ratios](docs/sdks/financials/README.md#get_financial_ratios) - Get Financial Ratios
|
|
435
|
+
* [get_reported_financials](docs/sdks/financials/README.md#get_reported_financials) - Get Reported Financials
|
|
436
|
+
* [get_revenue_breakdown](docs/sdks/financials/README.md#get_revenue_breakdown) - Get Revenue Breakdown
|
|
437
|
+
* [get_short_interest](docs/sdks/financials/README.md#get_short_interest) - Get Short Interest Data
|
|
438
|
+
* [get_short_volume](docs/sdks/financials/README.md#get_short_volume) - Get Short Volume Data
|
|
439
|
+
* [get_financial_statements](docs/sdks/financials/README.md#get_financial_statements) - Get Financial Statements
|
|
440
|
+
|
|
441
|
+
### [Indices](docs/sdks/indices/README.md)
|
|
442
|
+
|
|
443
|
+
* [get_index_bar](docs/sdks/indices/README.md#get_index_bar) - Get Index Bar Data
|
|
444
|
+
* [get_index_bars](docs/sdks/indices/README.md#get_index_bars) - Get Index Bars Data
|
|
445
|
+
* [list_indices_by_group](docs/sdks/indices/README.md#list_indices_by_group) - Get Indices By Group
|
|
446
|
+
* [get_index_chart_bars](docs/sdks/indices/README.md#get_index_chart_bars) - Get Index Chart Data
|
|
447
|
+
* [list_index_groups](docs/sdks/indices/README.md#list_index_groups) - Get Index Groups
|
|
448
|
+
* [list_indices](docs/sdks/indices/README.md#list_indices) - Get Index List
|
|
449
|
+
* [get_index_realtime_values](docs/sdks/indices/README.md#get_index_realtime_values) - Get Realtime Indices Values
|
|
450
|
+
* [search_indices](docs/sdks/indices/README.md#search_indices) - Search Indices
|
|
451
|
+
|
|
452
|
+
### [Logos](docs/sdks/logos/README.md)
|
|
453
|
+
|
|
454
|
+
* [search_logos](docs/sdks/logos/README.md#search_logos) - Search Company Logos
|
|
455
|
+
* [sync_logos](docs/sdks/logos/README.md#sync_logos) - Sync Company Logos
|
|
456
|
+
|
|
457
|
+
### [Market](docs/sdks/market/README.md)
|
|
458
|
+
|
|
459
|
+
* [get_etb_list](docs/sdks/market/README.md#get_etb_list) - Get Easy-to-Borrow List
|
|
460
|
+
* [search_etb_symbols](docs/sdks/market/README.md#search_etb_symbols) - Search Easy-to-Borrow Symbols
|
|
461
|
+
* [get_market_holidays](docs/sdks/market/README.md#get_market_holidays) - Get Market Holidays
|
|
462
|
+
* [get_market_status](docs/sdks/market/README.md#get_market_status) - Get Market Status
|
|
463
|
+
* [get_equity_details](docs/sdks/market/README.md#get_equity_details) - Get equity details
|
|
464
|
+
* [get_option_details](docs/sdks/market/README.md#get_option_details) - Get option details
|
|
465
|
+
* [search_market_symbols](docs/sdks/market/README.md#search_market_symbols) - Search Symbols
|
|
466
|
+
|
|
467
|
+
### [News](docs/sdks/newssdk/README.md)
|
|
468
|
+
|
|
469
|
+
* [get_news](docs/sdks/newssdk/README.md#get_news) - Get Market News
|
|
470
|
+
* [get_news_sentiment](docs/sdks/newssdk/README.md#get_news_sentiment) - Get News Sentiment
|
|
471
|
+
* [get_news_by_id](docs/sdks/newssdk/README.md#get_news_by_id) - Get News by ID
|
|
472
|
+
|
|
473
|
+
### [Options](docs/sdks/options/README.md)
|
|
474
|
+
|
|
475
|
+
* [get_options_activity](docs/sdks/options/README.md#get_options_activity) - Get Options Activity
|
|
476
|
+
* [get_option_last_trade](docs/sdks/options/README.md#get_option_last_trade) - Get Options Last Trade
|
|
477
|
+
* [get_option_open_close](docs/sdks/options/README.md#get_option_open_close) - Get Option Open/Close Data
|
|
478
|
+
* [get_option_previous_day](docs/sdks/options/README.md#get_option_previous_day) - Get Previous Day Option Data
|
|
479
|
+
* [get_option_quotes](docs/sdks/options/README.md#get_option_quotes) - Get Options Quotes
|
|
480
|
+
* [get_option_chain_snapshot](docs/sdks/options/README.md#get_option_chain_snapshot) - Get option chain snapshot
|
|
481
|
+
* [get_option_contract_snapshot](docs/sdks/options/README.md#get_option_contract_snapshot) - Get option contract snapshot
|
|
482
|
+
* [get_option_trades](docs/sdks/options/README.md#get_option_trades) - Get Options Trades
|
|
483
|
+
* [get_options_unusual_activity](docs/sdks/options/README.md#get_options_unusual_activity) - Get Options Unusual Activity by Symbol
|
|
484
|
+
* [list_option_contracts](docs/sdks/options/README.md#list_option_contracts) - Get Options Contract Symbols
|
|
485
|
+
* [list_option_expiry_dates](docs/sdks/options/README.md#list_option_expiry_dates) - Get Options Expiry Dates
|
|
486
|
+
|
|
487
|
+
### [Orders](docs/sdks/orders/README.md)
|
|
488
|
+
|
|
489
|
+
* [place_order](docs/sdks/orders/README.md#place_order) - Place an order
|
|
490
|
+
* [cancel_order](docs/sdks/orders/README.md#cancel_order) - Cancel an order
|
|
491
|
+
* [preview_order](docs/sdks/orders/README.md#preview_order) - Preview order
|
|
492
|
+
* [replace_order](docs/sdks/orders/README.md#replace_order) - Replace an order
|
|
493
|
+
* [list_active_orders](docs/sdks/orders/README.md#list_active_orders) - List active orders (v2)
|
|
494
|
+
* [list_order_history](docs/sdks/orders/README.md#list_order_history) - List order history (v2)
|
|
495
|
+
|
|
496
|
+
### [Ownership](docs/sdks/ownership/README.md)
|
|
497
|
+
|
|
498
|
+
* [get_institutional_ownership](docs/sdks/ownership/README.md#get_institutional_ownership) - Get Institutional Ownership
|
|
499
|
+
* [get_institutional_portfolio](docs/sdks/ownership/README.md#get_institutional_portfolio) - Get Institutional Portfolio
|
|
500
|
+
* [get_ownership_data](docs/sdks/ownership/README.md#get_ownership_data) - Get Company Ownership Data
|
|
501
|
+
* [get_fund_ownership](docs/sdks/ownership/README.md#get_fund_ownership) - Get Fund Ownership Data
|
|
502
|
+
* [get_insider_transactions](docs/sdks/ownership/README.md#get_insider_transactions) - Get Insider Transactions
|
|
503
|
+
|
|
504
|
+
### [Predictions.History](docs/sdks/history/README.md)
|
|
505
|
+
|
|
506
|
+
* [get_history](docs/sdks/history/README.md#get_history) - Get historical ticks for a single symbol
|
|
507
|
+
* [get_history_batch](docs/sdks/history/README.md#get_history_batch) - Batch historical ticks for up to 5 symbols
|
|
508
|
+
|
|
509
|
+
### [Predictions.Markets](docs/sdks/markets/README.md)
|
|
510
|
+
|
|
511
|
+
* [get_base_event](docs/sdks/markets/README.md#get_base_event) - Get a base event with its events and each event's contracts
|
|
512
|
+
* [list_categories](docs/sdks/markets/README.md#list_categories) - List prediction market categories
|
|
513
|
+
* [get_event_contracts](docs/sdks/markets/README.md#get_event_contracts) - Get an event and all contracts under it
|
|
514
|
+
* [search](docs/sdks/markets/README.md#search) - Search contracts, events or base events
|
|
515
|
+
|
|
516
|
+
### [Predictions.Orders](docs/sdks/predictionsorders/README.md)
|
|
517
|
+
|
|
518
|
+
* [list_prediction_orders](docs/sdks/predictionsorders/README.md#list_prediction_orders) - List prediction orders
|
|
519
|
+
* [place_prediction_order](docs/sdks/predictionsorders/README.md#place_prediction_order) - Place prediction order
|
|
520
|
+
* [get_prediction_order](docs/sdks/predictionsorders/README.md#get_prediction_order) - Get prediction order
|
|
521
|
+
|
|
522
|
+
### [Signals](docs/sdks/signals/README.md)
|
|
523
|
+
|
|
524
|
+
* [get_bull_bear_analysis](docs/sdks/signals/README.md#get_bull_bear_analysis) - Get Bull & Bear Analysis
|
|
525
|
+
|
|
526
|
+
### [Stocks](docs/sdks/stocks/README.md)
|
|
527
|
+
|
|
528
|
+
* [get_stock_aggregates](docs/sdks/stocks/README.md#get_stock_aggregates) - Get Aggregate Bars
|
|
529
|
+
* [get_daily_market_summary](docs/sdks/stocks/README.md#get_daily_market_summary) - Get Daily Market Summary
|
|
530
|
+
* [get_stock_last_quote](docs/sdks/stocks/README.md#get_stock_last_quote) - Get Last Quote (NBBO)
|
|
531
|
+
* [get_stock_last_trade](docs/sdks/stocks/README.md#get_stock_last_trade) - Get Last Trade
|
|
532
|
+
* [get_stock_open_close](docs/sdks/stocks/README.md#get_stock_open_close) - Get Daily Ticker Summary
|
|
533
|
+
* [get_stock_previous_day](docs/sdks/stocks/README.md#get_stock_previous_day) - Get Previous Day Bar
|
|
534
|
+
* [get_stock_quotes](docs/sdks/stocks/README.md#get_stock_quotes) - Get Stock Quotes (NBBO)
|
|
535
|
+
* [get_stock_snapshots](docs/sdks/stocks/README.md#get_stock_snapshots) - Get Full Market Snapshot
|
|
536
|
+
* [get_stock_trades](docs/sdks/stocks/README.md#get_stock_trades) - Get Stock Trades
|
|
537
|
+
* [get_unified_snapshot](docs/sdks/stocks/README.md#get_unified_snapshot) - Get Unified Snapshot
|
|
538
|
+
|
|
539
|
+
### [TechnicalAnalysis](docs/sdks/technicalanalysissdk/README.md)
|
|
540
|
+
|
|
541
|
+
* [get_technical_indicator](docs/sdks/technicalanalysissdk/README.md#get_technical_indicator) - Get Technical Indicator Data
|
|
542
|
+
* [get_technical_patterns](docs/sdks/technicalanalysissdk/README.md#get_technical_patterns) - Get Technical Patterns
|
|
543
|
+
* [get_support_resistance_levels](docs/sdks/technicalanalysissdk/README.md#get_support_resistance_levels) - Get Support & Resistance Levels
|
|
544
|
+
* [get_aggregate_technical_indicators](docs/sdks/technicalanalysissdk/README.md#get_aggregate_technical_indicators) - Get Aggregate Technical Indicators
|
|
545
|
+
|
|
546
|
+
### [Watchlist](docs/sdks/watchlistsdk/README.md)
|
|
547
|
+
|
|
548
|
+
* [list](docs/sdks/watchlistsdk/README.md#list) - List Watchlists
|
|
549
|
+
* [create](docs/sdks/watchlistsdk/README.md#create) - Create Watchlist
|
|
550
|
+
* [replace_all](docs/sdks/watchlistsdk/README.md#replace_all) - Replace All Watchlists
|
|
551
|
+
* [delete](docs/sdks/watchlistsdk/README.md#delete) - Delete Watchlist
|
|
552
|
+
* [get](docs/sdks/watchlistsdk/README.md#get) - Get Watchlist
|
|
553
|
+
* [update](docs/sdks/watchlistsdk/README.md#update) - Update Watchlist
|
|
554
|
+
|
|
555
|
+
</details>
|
|
556
|
+
<!-- End Available Resources and Operations [operations] -->
|
|
557
|
+
|
|
558
|
+
<!-- Start Pagination [pagination] -->
|
|
559
|
+
## Pagination
|
|
560
|
+
|
|
561
|
+
Some of the endpoints in this SDK support pagination. To use pagination, you make your SDK calls as usual, but the
|
|
562
|
+
returned response object will have a `Next` method that can be called to pull down the next group of results. If the
|
|
563
|
+
return value of `Next` is `None`, then there are no more pages to be fetched.
|
|
564
|
+
|
|
565
|
+
Here's an example of one such pagination call:
|
|
566
|
+
```python
|
|
567
|
+
from finance_dev import FinanceDev, models
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
with FinanceDev(
|
|
571
|
+
security=models.Security(
|
|
572
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
573
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
574
|
+
),
|
|
575
|
+
) as fd_client:
|
|
576
|
+
|
|
577
|
+
res = fd_client.analytics.get_analyst_insights()
|
|
578
|
+
|
|
579
|
+
while res is not None:
|
|
580
|
+
# Handle items
|
|
581
|
+
|
|
582
|
+
res = res.next()
|
|
583
|
+
|
|
584
|
+
```
|
|
585
|
+
<!-- End Pagination [pagination] -->
|
|
586
|
+
|
|
587
|
+
<!-- Start Retries [retries] -->
|
|
588
|
+
## Retries
|
|
589
|
+
|
|
590
|
+
Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
|
|
591
|
+
|
|
592
|
+
To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call:
|
|
593
|
+
```python
|
|
594
|
+
from finance_dev import FinanceDev, models
|
|
595
|
+
from finance_dev.utils import BackoffStrategy, RetryConfig
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
with FinanceDev(
|
|
599
|
+
security=models.Security(
|
|
600
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
601
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
602
|
+
),
|
|
603
|
+
) as fd_client:
|
|
604
|
+
|
|
605
|
+
res = fd_client.accounts.get_account_positions(id="TEST-ACCOUNT-001",
|
|
606
|
+
RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
|
|
607
|
+
|
|
608
|
+
assert res.get_positions_response is not None
|
|
609
|
+
|
|
610
|
+
# Handle response
|
|
611
|
+
print(res.get_positions_response)
|
|
612
|
+
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK:
|
|
616
|
+
```python
|
|
617
|
+
from finance_dev import FinanceDev, models
|
|
618
|
+
from finance_dev.utils import BackoffStrategy, RetryConfig
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
with FinanceDev(
|
|
622
|
+
retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False),
|
|
623
|
+
security=models.Security(
|
|
624
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
625
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
626
|
+
),
|
|
627
|
+
) as fd_client:
|
|
628
|
+
|
|
629
|
+
res = fd_client.accounts.get_account_positions(id="TEST-ACCOUNT-001")
|
|
630
|
+
|
|
631
|
+
assert res.get_positions_response is not None
|
|
632
|
+
|
|
633
|
+
# Handle response
|
|
634
|
+
print(res.get_positions_response)
|
|
635
|
+
|
|
636
|
+
```
|
|
637
|
+
<!-- End Retries [retries] -->
|
|
638
|
+
|
|
639
|
+
<!-- Start Error Handling [errors] -->
|
|
640
|
+
## Error Handling
|
|
641
|
+
|
|
642
|
+
[`FinanceDevAPIError`](./src/finance_dev/errors/financedevapierror.py) is the base class for all HTTP error responses. It has the following properties:
|
|
643
|
+
|
|
644
|
+
| Property | Type | Description |
|
|
645
|
+
| ------------------ | ---------------- | --------------------------------------------------------------------------------------- |
|
|
646
|
+
| `err.message` | `str` | Error message |
|
|
647
|
+
| `err.status_code` | `int` | HTTP response status code eg `404` |
|
|
648
|
+
| `err.headers` | `httpx.Headers` | HTTP response headers |
|
|
649
|
+
| `err.body` | `str` | HTTP body. Can be empty string if no body is returned. |
|
|
650
|
+
| `err.raw_response` | `httpx.Response` | Raw HTTP response |
|
|
651
|
+
| `err.data` | | Optional. Some errors may contain structured data. [See Error Classes](#error-classes). |
|
|
652
|
+
|
|
653
|
+
### Example
|
|
654
|
+
```python
|
|
655
|
+
from finance_dev import FinanceDev, errors, models
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
with FinanceDev(
|
|
659
|
+
security=models.Security(
|
|
660
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
661
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
662
|
+
),
|
|
663
|
+
) as fd_client:
|
|
664
|
+
res = None
|
|
665
|
+
try:
|
|
666
|
+
|
|
667
|
+
res = fd_client.accounts.get_account_positions(id="TEST-ACCOUNT-001")
|
|
668
|
+
|
|
669
|
+
assert res.get_positions_response is not None
|
|
670
|
+
|
|
671
|
+
# Handle response
|
|
672
|
+
print(res.get_positions_response)
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
except errors.FinanceDevAPIError as e:
|
|
676
|
+
# The base class for HTTP error responses
|
|
677
|
+
print(e.message)
|
|
678
|
+
print(e.status_code)
|
|
679
|
+
print(e.body)
|
|
680
|
+
print(e.headers)
|
|
681
|
+
print(e.raw_response)
|
|
682
|
+
|
|
683
|
+
# Depending on the method different errors may be thrown
|
|
684
|
+
if isinstance(e, errors.AuthenticationErrorEnvelope):
|
|
685
|
+
print(e.data.error) # Optional[models.AuthenticationErrorDetail]
|
|
686
|
+
print(e.data.meta) # Optional[Dict[str, Any]]
|
|
687
|
+
print(e.data.http_meta) # models.HTTPMetadata
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
### Error Classes
|
|
691
|
+
**Primary errors:**
|
|
692
|
+
* [`FinanceDevAPIError`](./src/finance_dev/errors/financedevapierror.py): The base class for HTTP error responses.
|
|
693
|
+
* [`ErrorResponse`](./src/finance_dev/errors/errorresponse.py): Flat error body: an `error` string, with optional structured `codes` and additional `metadata`. *
|
|
694
|
+
* [`AuthenticationErrorEnvelope`](./src/finance_dev/errors/authenticationerrorenvelope.py): JSON envelope where `error` is a nested object (`type`, `code`, `message`, …). Many services use this shape for 400, 401, 403, 404, and 5xx when using the shared HTTP error format. *
|
|
695
|
+
|
|
696
|
+
<details><summary>Less common errors (7)</summary>
|
|
697
|
+
|
|
698
|
+
<br />
|
|
699
|
+
|
|
700
|
+
**Network errors:**
|
|
701
|
+
* [`httpx.RequestError`](https://www.python-httpx.org/exceptions/#httpx.RequestError): Base class for request errors.
|
|
702
|
+
* [`httpx.ConnectError`](https://www.python-httpx.org/exceptions/#httpx.ConnectError): HTTP client was unable to make a request to a server.
|
|
703
|
+
* [`httpx.TimeoutException`](https://www.python-httpx.org/exceptions/#httpx.TimeoutException): HTTP request timed out.
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
**Inherit from [`FinanceDevAPIError`](./src/finance_dev/errors/financedevapierror.py)**:
|
|
707
|
+
* [`ErrorEnvelope`](./src/finance_dev/errors/errorenvelope.py): Prediction-market error envelope. Returned by historical-data and prediction-market reference endpoints on 400/404/500/502. Applicable to 6 of 151 methods.*
|
|
708
|
+
* [`PredOrdersErrorEnvelope`](./src/finance_dev/errors/predorderserrorenvelope.py): Invalid request. `INVALID_ORDER` carries the reason in `message`; on placement this includes refusals from order entry and the venue (price, tick size, account setup). Applicable to 3 of 151 methods.*
|
|
709
|
+
* [`ResponseValidationError`](./src/finance_dev/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
|
|
710
|
+
|
|
711
|
+
</details>
|
|
712
|
+
|
|
713
|
+
\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable.
|
|
714
|
+
<!-- End Error Handling [errors] -->
|
|
715
|
+
|
|
716
|
+
<!-- Start Server Selection [server] -->
|
|
717
|
+
## Server Selection
|
|
718
|
+
|
|
719
|
+
### Override Server URL Per-Client
|
|
720
|
+
|
|
721
|
+
The default server can be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example:
|
|
722
|
+
```python
|
|
723
|
+
from finance_dev import FinanceDev, models
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
with FinanceDev(
|
|
727
|
+
server_url="https://api.aries.com",
|
|
728
|
+
security=models.Security(
|
|
729
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
730
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
731
|
+
),
|
|
732
|
+
) as fd_client:
|
|
733
|
+
|
|
734
|
+
res = fd_client.accounts.get_account_positions(id="TEST-ACCOUNT-001")
|
|
735
|
+
|
|
736
|
+
assert res.get_positions_response is not None
|
|
737
|
+
|
|
738
|
+
# Handle response
|
|
739
|
+
print(res.get_positions_response)
|
|
740
|
+
|
|
741
|
+
```
|
|
742
|
+
<!-- End Server Selection [server] -->
|
|
743
|
+
|
|
744
|
+
<!-- Start Custom HTTP Client [http-client] -->
|
|
745
|
+
## Custom HTTP Client
|
|
746
|
+
|
|
747
|
+
The Python SDK makes API calls using the [httpx](https://www.python-httpx.org/) HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance.
|
|
748
|
+
Depending on whether you are using the sync or async version of the SDK, you can pass an instance of `HttpClient` or `AsyncHttpClient` respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls.
|
|
749
|
+
This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of `httpx.Client` or `httpx.AsyncClient` directly.
|
|
750
|
+
|
|
751
|
+
For example, you could specify a header for every request that this sdk makes as follows:
|
|
752
|
+
```python
|
|
753
|
+
from finance_dev import FinanceDev
|
|
754
|
+
import httpx
|
|
755
|
+
|
|
756
|
+
http_client = httpx.Client(headers={"x-custom-header": "someValue"})
|
|
757
|
+
s = FinanceDev(client=http_client)
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
or you could wrap the client with your own custom logic:
|
|
761
|
+
```python
|
|
762
|
+
from finance_dev import FinanceDev
|
|
763
|
+
from finance_dev.httpclient import AsyncHttpClient
|
|
764
|
+
import httpx
|
|
765
|
+
|
|
766
|
+
class CustomClient(AsyncHttpClient):
|
|
767
|
+
client: AsyncHttpClient
|
|
768
|
+
|
|
769
|
+
def __init__(self, client: AsyncHttpClient):
|
|
770
|
+
self.client = client
|
|
771
|
+
|
|
772
|
+
async def send(
|
|
773
|
+
self,
|
|
774
|
+
request: httpx.Request,
|
|
775
|
+
*,
|
|
776
|
+
stream: bool = False,
|
|
777
|
+
auth: Union[
|
|
778
|
+
httpx._types.AuthTypes, httpx._client.UseClientDefault, None
|
|
779
|
+
] = httpx.USE_CLIENT_DEFAULT,
|
|
780
|
+
follow_redirects: Union[
|
|
781
|
+
bool, httpx._client.UseClientDefault
|
|
782
|
+
] = httpx.USE_CLIENT_DEFAULT,
|
|
783
|
+
) -> httpx.Response:
|
|
784
|
+
request.headers["Client-Level-Header"] = "added by client"
|
|
785
|
+
|
|
786
|
+
return await self.client.send(
|
|
787
|
+
request, stream=stream, auth=auth, follow_redirects=follow_redirects
|
|
788
|
+
)
|
|
789
|
+
|
|
790
|
+
def build_request(
|
|
791
|
+
self,
|
|
792
|
+
method: str,
|
|
793
|
+
url: httpx._types.URLTypes,
|
|
794
|
+
*,
|
|
795
|
+
content: Optional[httpx._types.RequestContent] = None,
|
|
796
|
+
data: Optional[httpx._types.RequestData] = None,
|
|
797
|
+
files: Optional[httpx._types.RequestFiles] = None,
|
|
798
|
+
json: Optional[Any] = None,
|
|
799
|
+
params: Optional[httpx._types.QueryParamTypes] = None,
|
|
800
|
+
headers: Optional[httpx._types.HeaderTypes] = None,
|
|
801
|
+
cookies: Optional[httpx._types.CookieTypes] = None,
|
|
802
|
+
timeout: Union[
|
|
803
|
+
httpx._types.TimeoutTypes, httpx._client.UseClientDefault
|
|
804
|
+
] = httpx.USE_CLIENT_DEFAULT,
|
|
805
|
+
extensions: Optional[httpx._types.RequestExtensions] = None,
|
|
806
|
+
) -> httpx.Request:
|
|
807
|
+
return self.client.build_request(
|
|
808
|
+
method,
|
|
809
|
+
url,
|
|
810
|
+
content=content,
|
|
811
|
+
data=data,
|
|
812
|
+
files=files,
|
|
813
|
+
json=json,
|
|
814
|
+
params=params,
|
|
815
|
+
headers=headers,
|
|
816
|
+
cookies=cookies,
|
|
817
|
+
timeout=timeout,
|
|
818
|
+
extensions=extensions,
|
|
819
|
+
)
|
|
820
|
+
|
|
821
|
+
s = FinanceDev(async_client=CustomClient(httpx.AsyncClient()))
|
|
822
|
+
```
|
|
823
|
+
### httpx2 (Pydantic's httpx fork)
|
|
824
|
+
|
|
825
|
+
[httpx2](https://httpx2.pydantic.dev/) is Pydantic's maintained fork of `httpx`. To run this SDK on httpx2, call `alias_httpx()` at your program's entry point, before importing the SDK, so every `import httpx` — including the ones inside the SDK — resolves to `httpx2`:
|
|
826
|
+
```python
|
|
827
|
+
import httpx2
|
|
828
|
+
|
|
829
|
+
httpx2.alias_httpx()
|
|
830
|
+
|
|
831
|
+
from finance_dev import FinanceDev
|
|
832
|
+
|
|
833
|
+
s = FinanceDev()
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
An SDK can also be generated against httpx2 directly, so it depends on the fork instead of `httpx`, by setting `python.httpClientLibrary: httpx2` in `gen.yaml`.
|
|
837
|
+
<!-- End Custom HTTP Client [http-client] -->
|
|
838
|
+
|
|
839
|
+
<!-- Start Resource Management [resource-management] -->
|
|
840
|
+
## Resource Management
|
|
841
|
+
|
|
842
|
+
The `FinanceDev` class implements the context manager protocol and registers a finalizer function to close the underlying sync and async HTTPX clients it uses under the hood. This will close HTTP connections, release memory and free up other resources held by the SDK. In short-lived Python programs and notebooks that make a few SDK method calls, resource management may not be a concern. However, in longer-lived programs, it is beneficial to create a single SDK instance via a [context manager][context-manager] and reuse it across the application.
|
|
843
|
+
|
|
844
|
+
[context-manager]: https://docs.python.org/3/reference/datamodel.html#context-managers
|
|
845
|
+
|
|
846
|
+
```python
|
|
847
|
+
from finance_dev import FinanceDev, models
|
|
848
|
+
def main():
|
|
849
|
+
|
|
850
|
+
with FinanceDev(
|
|
851
|
+
security=models.Security(
|
|
852
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
853
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
854
|
+
),
|
|
855
|
+
) as fd_client:
|
|
856
|
+
# Rest of application here...
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
# Or when using async:
|
|
860
|
+
async def amain():
|
|
861
|
+
|
|
862
|
+
async with FinanceDev(
|
|
863
|
+
security=models.Security(
|
|
864
|
+
client_id="<YOUR_CLIENT_ID_HERE>",
|
|
865
|
+
client_secret="<YOUR_CLIENT_SECRET_HERE>",
|
|
866
|
+
),
|
|
867
|
+
) as fd_client:
|
|
868
|
+
# Rest of application here...
|
|
869
|
+
```
|
|
870
|
+
<!-- End Resource Management [resource-management] -->
|
|
871
|
+
|
|
872
|
+
<!-- Start Debugging [debug] -->
|
|
873
|
+
## Debugging
|
|
874
|
+
|
|
875
|
+
You can setup your SDK to emit debug logs for SDK requests and responses.
|
|
876
|
+
|
|
877
|
+
You can pass your own logger class directly into your SDK.
|
|
878
|
+
```python
|
|
879
|
+
from finance_dev import FinanceDev
|
|
880
|
+
import logging
|
|
881
|
+
|
|
882
|
+
logging.basicConfig(level=logging.DEBUG)
|
|
883
|
+
s = FinanceDev(debug_logger=logging.getLogger("finance_dev"))
|
|
884
|
+
```
|
|
885
|
+
<!-- End Debugging [debug] -->
|
|
886
|
+
|
|
887
|
+
<!-- Placeholder for Future Speakeasy SDK Sections -->
|
|
888
|
+
|
|
889
|
+
# WebSocket streaming
|
|
890
|
+
|
|
891
|
+
`FinanceDev` exposes market, chart, and account WebSocket clients under
|
|
892
|
+
`sdk.websocket`. Connections authenticate on entry and support both sync and
|
|
893
|
+
async context managers. See the [WebSocket guide](docs/websocket/README.md)
|
|
894
|
+
for examples, token providers, event semantics, and reconnect behavior.
|
|
895
|
+
|
|
896
|
+
Market field selectors use `"*"` for all fields. To combine Time & Sales with
|
|
897
|
+
quotes and trades, set `time_and_sales=True`, `quote_fields="*"`, and
|
|
898
|
+
`trade_fields="*"`; Time & Sales alone selects only that stream.
|
|
899
|
+
|
|
900
|
+
# Development
|
|
901
|
+
|
|
902
|
+
## Maturity
|
|
903
|
+
|
|
904
|
+
This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage
|
|
905
|
+
to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally
|
|
906
|
+
looking for the latest version.
|
|
907
|
+
|
|
908
|
+
## Contributions
|
|
909
|
+
|
|
910
|
+
While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation.
|
|
911
|
+
We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
|
|
912
|
+
|
|
913
|
+
### SDK Created by [Speakeasy](https://www.speakeasy.com/?utm_source=finance-dev&utm_campaign=python)
|