finance_dev 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- finance_dev/__init__.py +18 -0
- finance_dev/_hooks/__init__.py +7 -0
- finance_dev/_hooks/clientcredentials.py +319 -0
- finance_dev/_hooks/oauth2scopes.py +50 -0
- finance_dev/_hooks/registration.py +13 -0
- finance_dev/_hooks/sdkhooks.py +82 -0
- finance_dev/_hooks/types.py +125 -0
- finance_dev/_version.py +16 -0
- finance_dev/accounts.py +797 -0
- finance_dev/alternativedata.py +4830 -0
- finance_dev/analytics.py +3757 -0
- finance_dev/basesdk.py +393 -0
- finance_dev/calendar.py +1523 -0
- finance_dev/chart.py +1881 -0
- finance_dev/company.py +1105 -0
- finance_dev/corporateactions.py +1795 -0
- finance_dev/economy.py +1153 -0
- finance_dev/errors/__init__.py +94 -0
- finance_dev/errors/apierror.py +41 -0
- finance_dev/errors/authenticationerrorenvelope.py +43 -0
- finance_dev/errors/badrequest.py +34 -0
- finance_dev/errors/errorenvelope.py +42 -0
- finance_dev/errors/errorresponse.py +45 -0
- finance_dev/errors/financedevapierror.py +31 -0
- finance_dev/errors/forbidden.py +34 -0
- finance_dev/errors/internalservererror.py +35 -0
- finance_dev/errors/no_response_error.py +18 -0
- finance_dev/errors/notfound.py +34 -0
- finance_dev/errors/orderhistorybadrequest.py +35 -0
- finance_dev/errors/predorderserrorenvelope.py +42 -0
- finance_dev/errors/responsevalidationerror.py +28 -0
- finance_dev/errors/unauthorized.py +34 -0
- finance_dev/estimates.py +1906 -0
- finance_dev/etf.py +1108 -0
- finance_dev/filings.py +586 -0
- finance_dev/financials.py +4079 -0
- finance_dev/history.py +477 -0
- finance_dev/httpclient.py +126 -0
- finance_dev/indices.py +2308 -0
- finance_dev/logos.py +692 -0
- finance_dev/market.py +1825 -0
- finance_dev/markets.py +952 -0
- finance_dev/models/__init__.py +4568 -0
- finance_dev/models/accountbalancev2.py +340 -0
- finance_dev/models/accountitem.py +78 -0
- finance_dev/models/accountposition.py +147 -0
- finance_dev/models/aggregatetechnicalindicatorsresponse.py +192 -0
- finance_dev/models/analystinsightitem.py +161 -0
- finance_dev/models/analystinsightsresponse.py +39 -0
- finance_dev/models/apperror.py +123 -0
- finance_dev/models/authenticationerrordetail.py +58 -0
- finance_dev/models/bankbranchesresponse.py +96 -0
- finance_dev/models/basicfinancials.py +243 -0
- finance_dev/models/bullbearanalysisresponse.py +150 -0
- finance_dev/models/cancelorderop.py +40 -0
- finance_dev/models/cancelordrequest_union.py +287 -0
- finance_dev/models/cancelordresponse.py +115 -0
- finance_dev/models/cashflowstatement.py +290 -0
- finance_dev/models/cashflowstatementsresponse.py +61 -0
- finance_dev/models/chartbars.py +111 -0
- finance_dev/models/chartconfig.py +81 -0
- finance_dev/models/chartresolution.py +46 -0
- finance_dev/models/companyesgresponse.py +408 -0
- finance_dev/models/companyexecutive.py +70 -0
- finance_dev/models/companyexecutiveresponse.py +39 -0
- finance_dev/models/companypeersresponse.py +38 -0
- finance_dev/models/companypresentationresponse.py +96 -0
- finance_dev/models/companyprofile.py +255 -0
- finance_dev/models/conferencecallsresponse.py +169 -0
- finance_dev/models/congressionaltradingresponse.py +138 -0
- finance_dev/models/covid19uscasesresponse.py +79 -0
- finance_dev/models/createconfigwatchlistop.py +40 -0
- finance_dev/models/createwatchlistrequest.py +43 -0
- finance_dev/models/dailymarketsummaryresponse.py +73 -0
- finance_dev/models/deleteconfigwatchlistbyidop.py +53 -0
- finance_dev/models/dividenditem.py +125 -0
- finance_dev/models/dividendsresponse.py +61 -0
- finance_dev/models/earningrelease.py +291 -0
- finance_dev/models/earningscallliveresponse.py +103 -0
- finance_dev/models/earningsqualityscoreresponse.py +140 -0
- finance_dev/models/earningssurprisesresponse.py +125 -0
- finance_dev/models/ebitdaestimatesresponse.py +176 -0
- finance_dev/models/ebitestimatesresponse.py +176 -0
- finance_dev/models/economicscalendarevent.py +160 -0
- finance_dev/models/economicsindicator.py +87 -0
- finance_dev/models/epsestimatesresponse.py +176 -0
- finance_dev/models/equitydetailsdto.py +569 -0
- finance_dev/models/errorcode.py +48 -0
- finance_dev/models/etblistresponse.py +43 -0
- finance_dev/models/etbsearchrequest.py +21 -0
- finance_dev/models/etbsearchresponse.py +43 -0
- finance_dev/models/etfcountryallocationresponse.py +113 -0
- finance_dev/models/etfholdingsresponse.py +163 -0
- finance_dev/models/etfprofileresponse.py +234 -0
- finance_dev/models/etfsectorallocationresponse.py +113 -0
- finance_dev/models/exchangecode.py +90 -0
- finance_dev/models/fdaadvisorycommitteecalendarresponse.py +88 -0
- finance_dev/models/filingsimilarityrecord.py +115 -0
- finance_dev/models/filingssimilarityindexdatawrapper.py +52 -0
- finance_dev/models/filingssimilarityindexresponse.py +42 -0
- finance_dev/models/financialratiosresponse.py +252 -0
- finance_dev/models/financialsreporteddatawrapper.py +49 -0
- finance_dev/models/financialsreportedresponse.py +42 -0
- finance_dev/models/financialsrevenuebreakdowndatawrapper.py +49 -0
- finance_dev/models/financialsrevenuebreakdownresponse.py +42 -0
- finance_dev/models/financialsstatementsdatawrapper.py +44 -0
- finance_dev/models/financialsstatementsresponse.py +42 -0
- finance_dev/models/financialstatement.py +171 -0
- finance_dev/models/financialstatementtype.py +14 -0
- finance_dev/models/getaccountbalanceop.py +53 -0
- finance_dev/models/getaccountpositionsop.py +53 -0
- finance_dev/models/getaccountsresponse.py +22 -0
- finance_dev/models/getaggregatetechnicalindicatorsop.py +94 -0
- finance_dev/models/getanalystinsightsop.py +164 -0
- finance_dev/models/getbankbranchesop.py +53 -0
- finance_dev/models/getbaseeventop.py +87 -0
- finance_dev/models/getbullbearanalysisop.py +91 -0
- finance_dev/models/getcashflowstatementsop.py +564 -0
- finance_dev/models/getchartconfigop.py +40 -0
- finance_dev/models/getcharthistoryop.py +122 -0
- finance_dev/models/getcharttimeop.py +39 -0
- finance_dev/models/getcompanyesgop.py +53 -0
- finance_dev/models/getcompanyexecutivesop.py +56 -0
- finance_dev/models/getcompanymetricsop.py +68 -0
- finance_dev/models/getcompanypeersop.py +53 -0
- finance_dev/models/getcompanypresentationop.py +56 -0
- finance_dev/models/getcompanyprofileop.py +86 -0
- finance_dev/models/getconferencecallsop.py +111 -0
- finance_dev/models/getconfigwatchlistbyidop.py +53 -0
- finance_dev/models/getconfigwatchlistsop.py +40 -0
- finance_dev/models/getcongressionaltradingop.py +73 -0
- finance_dev/models/getcovid19uscasesop.py +43 -0
- finance_dev/models/getdailymarketsummaryop.py +92 -0
- finance_dev/models/getdividendsop.py +294 -0
- finance_dev/models/getearningscalendarop.py +87 -0
- finance_dev/models/getearningscallliveop.py +91 -0
- finance_dev/models/getearningsqualityscoreop.py +81 -0
- finance_dev/models/getearningssurprisesop.py +80 -0
- finance_dev/models/getebitdaestimatesop.py +91 -0
- finance_dev/models/getebitestimatesop.py +88 -0
- finance_dev/models/geteconomicscalendarop.py +92 -0
- finance_dev/models/geteconomicscalendarresponse.py +56 -0
- finance_dev/models/getepsestimatesop.py +88 -0
- finance_dev/models/getequitydetailsop.py +56 -0
- finance_dev/models/getequitydetailsresponse.py +45 -0
- finance_dev/models/getetblistop.py +40 -0
- finance_dev/models/getetfcountryallocationop.py +80 -0
- finance_dev/models/getetfholdingsop.py +96 -0
- finance_dev/models/getetfprofileop.py +77 -0
- finance_dev/models/getetfsectorallocationop.py +80 -0
- finance_dev/models/geteventcontractsop.py +87 -0
- finance_dev/models/getfdaadvisorycommitteecalendarop.py +47 -0
- finance_dev/models/getfilingssimilarityindexop.py +102 -0
- finance_dev/models/getfinancialratiosop.py +612 -0
- finance_dev/models/getfinancialstatementsop.py +117 -0
- finance_dev/models/getfundownershipop.py +77 -0
- finance_dev/models/gethistoricaldataop.py +61 -0
- finance_dev/models/gethistoricalesgop.py +53 -0
- finance_dev/models/gethistorybatchop.py +74 -0
- finance_dev/models/gethistoryop.py +123 -0
- finance_dev/models/getincomestatementsop.py +564 -0
- finance_dev/models/getindexbarop.py +140 -0
- finance_dev/models/getindexbarsop.py +149 -0
- finance_dev/models/getindexchartbarsop.py +178 -0
- finance_dev/models/getindexrealtimevaluesop.py +94 -0
- finance_dev/models/getinflationexpectationsop.py +157 -0
- finance_dev/models/getinflationop.py +154 -0
- finance_dev/models/getinsidertransactionsop.py +90 -0
- finance_dev/models/getinstitutionalownershipop.py +99 -0
- finance_dev/models/getinstitutionalportfolioop.py +75 -0
- finance_dev/models/getinvestmentthemeop.py +68 -0
- finance_dev/models/getipocalendarop.py +63 -0
- finance_dev/models/getlobbyingop.py +70 -0
- finance_dev/models/getmarketbreadthop.py +40 -0
- finance_dev/models/getmarketholidaysop.py +65 -0
- finance_dev/models/getmarketstatusop.py +65 -0
- finance_dev/models/getmergersandacquisitionsop.py +113 -0
- finance_dev/models/getnetinflowop.py +40 -0
- finance_dev/models/getnewsbyidop.py +73 -0
- finance_dev/models/getnewsop.py +98 -0
- finance_dev/models/getnewssentimentop.py +53 -0
- finance_dev/models/getoptionchainsnapshotop.py +244 -0
- finance_dev/models/getoptioncontractsnapshotop.py +69 -0
- finance_dev/models/getoptiondetailsop.py +56 -0
- finance_dev/models/getoptiondetailsresponse.py +45 -0
- finance_dev/models/getoptionlasttradeop.py +56 -0
- finance_dev/models/getoptionopencloseop.py +66 -0
- finance_dev/models/getoptionpreviousdayop.py +56 -0
- finance_dev/models/getoptionquotesop.py +177 -0
- finance_dev/models/getoptionsactivityop.py +111 -0
- finance_dev/models/getoptionsetfstopvolumeop.py +70 -0
- finance_dev/models/getoptionsstockstopgainersop.py +70 -0
- finance_dev/models/getoptionsstockstopvolumeop.py +70 -0
- finance_dev/models/getoptionsunusualactivityop.py +100 -0
- finance_dev/models/getoptiontradesop.py +177 -0
- finance_dev/models/getordersv2response.py +66 -0
- finance_dev/models/getownershipdataop.py +77 -0
- finance_dev/models/getpositionsresponse.py +39 -0
- finance_dev/models/getpredictionorderop.py +88 -0
- finance_dev/models/getpricetargetop.py +53 -0
- finance_dev/models/getquotesop.py +53 -0
- finance_dev/models/getratingsop.py +164 -0
- finance_dev/models/getratingsresponse.py +39 -0
- finance_dev/models/getreportedfinancialsop.py +127 -0
- finance_dev/models/getrevenuebreakdownop.py +85 -0
- finance_dev/models/getrevenueestimatesop.py +91 -0
- finance_dev/models/getsecfilingsop.py +113 -0
- finance_dev/models/getsectortickersop.py +124 -0
- finance_dev/models/getsectorwisechangeop.py +84 -0
- finance_dev/models/getshortinterestop.py +334 -0
- finance_dev/models/getshortvolumeop.py +333 -0
- finance_dev/models/getsocialsentimentop.py +90 -0
- finance_dev/models/getspinoffsop.py +112 -0
- finance_dev/models/getstockaggregatesop.py +174 -0
- finance_dev/models/getstocklastquoteop.py +56 -0
- finance_dev/models/getstocklasttradeop.py +56 -0
- finance_dev/models/getstockopencloseop.py +90 -0
- finance_dev/models/getstockpreviousdayop.py +80 -0
- finance_dev/models/getstockquotesop.py +177 -0
- finance_dev/models/getstocksnapshotsop.py +82 -0
- finance_dev/models/getstocksplitsop.py +243 -0
- finance_dev/models/getstocktradesop.py +177 -0
- finance_dev/models/getsupplychainop.py +53 -0
- finance_dev/models/getsupportresistancelevelsop.py +90 -0
- finance_dev/models/getsymbolinfoop.py +53 -0
- finance_dev/models/gettechnicalindicatorop.py +172 -0
- finance_dev/models/gettechnicalpatternsop.py +88 -0
- finance_dev/models/gettenderoffersop.py +112 -0
- finance_dev/models/gettickhistoryop.py +104 -0
- finance_dev/models/gettopgainersop.py +78 -0
- finance_dev/models/gettoplosersop.py +78 -0
- finance_dev/models/gettopmostactiveop.py +78 -0
- finance_dev/models/gettranscriptop.py +53 -0
- finance_dev/models/gettreasuryyieldsop.py +157 -0
- finance_dev/models/getunifiedsnapshotop.py +223 -0
- finance_dev/models/getupgradesdowngradesop.py +91 -0
- finance_dev/models/getusaspendingop.py +70 -0
- finance_dev/models/getuseraccountsop.py +40 -0
- finance_dev/models/getusptopatentsop.py +70 -0
- finance_dev/models/getvisaapplicationsop.py +73 -0
- finance_dev/models/historicalesgresponse.py +439 -0
- finance_dev/models/httpmetadata.py +24 -0
- finance_dev/models/incomestatement.py +296 -0
- finance_dev/models/incomestatementsresponse.py +61 -0
- finance_dev/models/indexbarresponse.py +194 -0
- finance_dev/models/indexbarsresponse.py +123 -0
- finance_dev/models/indexchartbarsresponse.py +213 -0
- finance_dev/models/indexgroupsresponse.py +78 -0
- finance_dev/models/indexlistresponse.py +95 -0
- finance_dev/models/indexsearchresponse.py +93 -0
- finance_dev/models/indicesbygroupresponse.py +93 -0
- finance_dev/models/indicesidentifiertype.py +28 -0
- finance_dev/models/indicesrealtimeindexinfo.py +67 -0
- finance_dev/models/indicesrealtimeindexvalue.py +157 -0
- finance_dev/models/indicesrealtimevaluesitem.py +80 -0
- finance_dev/models/indicesrealtimevaluesresponse.py +42 -0
- finance_dev/models/inflationexpectationsresponse.py +140 -0
- finance_dev/models/inflationresponse.py +132 -0
- finance_dev/models/insidertransaction.py +97 -0
- finance_dev/models/insidertransactionsresponse.py +39 -0
- finance_dev/models/institutionalholding.py +77 -0
- finance_dev/models/institutionalownershipresponse.py +39 -0
- finance_dev/models/institutionalportfolioresponse.py +39 -0
- finance_dev/models/investmentthemeid.py +35 -0
- finance_dev/models/investmentthemeresponse.py +80 -0
- finance_dev/models/ipocalendarresponse.py +39 -0
- finance_dev/models/ipoitem.py +93 -0
- finance_dev/models/listactiveordersop.py +87 -0
- finance_dev/models/listcategoriesop.py +79 -0
- finance_dev/models/listindexgroupsop.py +40 -0
- finance_dev/models/listindicesbygroupop.py +58 -0
- finance_dev/models/listindicesop.py +91 -0
- finance_dev/models/listoptioncontractsop.py +66 -0
- finance_dev/models/listoptionexpirydatesop.py +56 -0
- finance_dev/models/listorderhistoryop.py +139 -0
- finance_dev/models/listpredictionordersop.py +134 -0
- finance_dev/models/listtranscriptsop.py +53 -0
- finance_dev/models/lobbyingresponse.py +166 -0
- finance_dev/models/logosearchresponse.py +152 -0
- finance_dev/models/logosyncresponse.py +277 -0
- finance_dev/models/marketbreadth.py +97 -0
- finance_dev/models/marketbreadthresponse.py +44 -0
- finance_dev/models/marketholiday.py +56 -0
- finance_dev/models/marketholidayresponse.py +39 -0
- finance_dev/models/marketstatus.py +67 -0
- finance_dev/models/mergersandacquisitionsresponse.py +186 -0
- finance_dev/models/metricseriespoint.py +43 -0
- finance_dev/models/netinflow.py +81 -0
- finance_dev/models/netinflowresponse.py +44 -0
- finance_dev/models/newsitem.py +102 -0
- finance_dev/models/newslistresponse.py +128 -0
- finance_dev/models/newssentimentresponse.py +176 -0
- finance_dev/models/newstypeenum.py +16 -0
- finance_dev/models/optionchainsnapshotresponse.py +64 -0
- finance_dev/models/optioncontractsnapshotresponse.py +64 -0
- finance_dev/models/optioncontractsnapshotrow.py +164 -0
- finance_dev/models/optioncontractsresponse.py +131 -0
- finance_dev/models/optiondetailsdto.py +72 -0
- finance_dev/models/optionexpirydatesresponse.py +53 -0
- finance_dev/models/optionlasttraderesponse.py +169 -0
- finance_dev/models/optionopencloseresponse.py +97 -0
- finance_dev/models/optionpreviousdayresponse.py +89 -0
- finance_dev/models/optionquotesresponse.py +138 -0
- finance_dev/models/optionsactivityresponse.py +265 -0
- finance_dev/models/optionsnapshotcontractdetails.py +85 -0
- finance_dev/models/optionsnapshotdaybar.py +107 -0
- finance_dev/models/optionsnapshotgreeks.py +67 -0
- finance_dev/models/optionsnapshotlastquote.py +116 -0
- finance_dev/models/optionsnapshotlasttrade.py +102 -0
- finance_dev/models/optionsnapshotunderlying.py +86 -0
- finance_dev/models/optionsscreeneritem.py +151 -0
- finance_dev/models/optionsunusualactivityresponse.py +62 -0
- finance_dev/models/optionsunusualactivitytrade.py +103 -0
- finance_dev/models/optiontradesresponse.py +132 -0
- finance_dev/models/orderrequesttimeinforceenum.py +29 -0
- finance_dev/models/ordersideenum.py +20 -0
- finance_dev/models/ordertypeenum.py +20 -0
- finance_dev/models/ordleg.py +162 -0
- finance_dev/models/ordresponse.py +202 -0
- finance_dev/models/ownershipdataresponse.py +39 -0
- finance_dev/models/ownershiprecord.py +74 -0
- finance_dev/models/placeorderop.py +40 -0
- finance_dev/models/placeordrequest_union.py +335 -0
- finance_dev/models/placepredictionorderop.py +114 -0
- finance_dev/models/predmdbaseevent.py +62 -0
- finance_dev/models/predmdbaseeventhit.py +53 -0
- finance_dev/models/predmdbaseeventsearchresult.py +46 -0
- finance_dev/models/predmdbaseeventwithevents.py +32 -0
- finance_dev/models/predmdbatchhistoryrequest.py +16 -0
- finance_dev/models/predmdbatchhistoryresponse.py +16 -0
- finance_dev/models/predmdcategory.py +48 -0
- finance_dev/models/predmdcontract.py +177 -0
- finance_dev/models/predmdcontracthit.py +157 -0
- finance_dev/models/predmdcontractsearchresult.py +46 -0
- finance_dev/models/predmdevent.py +136 -0
- finance_dev/models/predmdeventhit.py +73 -0
- finance_dev/models/predmdeventsearchresult.py +46 -0
- finance_dev/models/predmdeventwithcontracts.py +22 -0
- finance_dev/models/predmdhistoryrequest.py +59 -0
- finance_dev/models/predmdhistoryresponse.py +53 -0
- finance_dev/models/predmdtick.py +53 -0
- finance_dev/models/predordersapperror.py +78 -0
- finance_dev/models/predordersorder.py +267 -0
- finance_dev/models/predordersorderdetail.py +26 -0
- finance_dev/models/predordersorderpage.py +45 -0
- finance_dev/models/predordersorderreport.py +88 -0
- finance_dev/models/predordersplaceorderrequest.py +159 -0
- finance_dev/models/previeworderop.py +40 -0
- finance_dev/models/previeworderresponse.py +127 -0
- finance_dev/models/pricetargetresponse.py +89 -0
- finance_dev/models/quotedata.py +49 -0
- finance_dev/models/quotesresponse.py +62 -0
- finance_dev/models/quotevalues.py +114 -0
- finance_dev/models/rating.py +193 -0
- finance_dev/models/ratingsaccuracy.py +242 -0
- finance_dev/models/replaceconfigwatchlistsop.py +40 -0
- finance_dev/models/replaceorderop.py +40 -0
- finance_dev/models/replaceordrequest_union.py +367 -0
- finance_dev/models/replaceordresponse.py +144 -0
- finance_dev/models/reportedbsitem.py +53 -0
- finance_dev/models/reportedfiling.py +110 -0
- finance_dev/models/reportedreport.py +39 -0
- finance_dev/models/reportingfrequency.py +16 -0
- finance_dev/models/revenuebreakdownaxis.py +52 -0
- finance_dev/models/revenuebreakdowndatapoint.py +58 -0
- finance_dev/models/revenuebreakdownentry.py +51 -0
- finance_dev/models/revenuebreakdowninner.py +75 -0
- finance_dev/models/revenueestimatesresponse.py +176 -0
- finance_dev/models/screenclause.py +70 -0
- finance_dev/models/screengroup.py +75 -0
- finance_dev/models/searchetbsymbolsop.py +40 -0
- finance_dev/models/searchindicesop.py +55 -0
- finance_dev/models/searchlogosop.py +158 -0
- finance_dev/models/searchmarketsymbolsop.py +80 -0
- finance_dev/models/searchop.py +232 -0
- finance_dev/models/searchsymbolitem.py +76 -0
- finance_dev/models/searchsymbolresponseitem.py +71 -0
- finance_dev/models/searchsymbolsop.py +77 -0
- finance_dev/models/secfiling.py +91 -0
- finance_dev/models/secfilingsresponse.py +39 -0
- finance_dev/models/sectoravgchange.py +50 -0
- finance_dev/models/security.py +59 -0
- finance_dev/models/securitytypeenum.py +16 -0
- finance_dev/models/shortinterestresponse.py +126 -0
- finance_dev/models/shortvolumeresponse.py +198 -0
- finance_dev/models/socialsentimentresponse.py +124 -0
- finance_dev/models/sortorderenum.py +13 -0
- finance_dev/models/spinoffsresponse.py +136 -0
- finance_dev/models/stockaggregatesresponse.py +92 -0
- finance_dev/models/stocklastquoteresponse.py +175 -0
- finance_dev/models/stocklasttraderesponse.py +169 -0
- finance_dev/models/stockohlcbar.py +85 -0
- finance_dev/models/stockopencloseresponse.py +109 -0
- finance_dev/models/stockpreviousdayresponse.py +86 -0
- finance_dev/models/stockquotesresponse.py +170 -0
- finance_dev/models/stockscreenerop.py +144 -0
- finance_dev/models/stockscreenerrequest.py +131 -0
- finance_dev/models/stockscreenerresponse.py +197 -0
- finance_dev/models/stocksnapshotsresponse.py +454 -0
- finance_dev/models/stocksplitsresponse.py +144 -0
- finance_dev/models/stocktradesresponse.py +164 -0
- finance_dev/models/supplychainresponse.py +158 -0
- finance_dev/models/supportresistancelevelsresponse.py +68 -0
- finance_dev/models/symboldetails.py +119 -0
- finance_dev/models/symbolerror.py +43 -0
- finance_dev/models/symbolinfo.py +183 -0
- finance_dev/models/synclogosop.py +146 -0
- finance_dev/models/technicalindicatorresponse.py +43 -0
- finance_dev/models/technicalindicatortype.py +21 -0
- finance_dev/models/technicalpatternsresponse.py +249 -0
- finance_dev/models/tenderofferidentifiertype.py +26 -0
- finance_dev/models/tenderoffersresponse.py +548 -0
- finance_dev/models/tickchartbars.py +104 -0
- finance_dev/models/tickresolution.py +20 -0
- finance_dev/models/timeinforceenum.py +26 -0
- finance_dev/models/tradeorderlegv2.py +164 -0
- finance_dev/models/tradeorderv2.py +434 -0
- finance_dev/models/transcriptresponse.py +162 -0
- finance_dev/models/transcriptsresponse.py +89 -0
- finance_dev/models/treasuryyieldsresponse.py +160 -0
- finance_dev/models/unifiedsnapshotresponse.py +308 -0
- finance_dev/models/updateconfigwatchlistbyidop.py +65 -0
- finance_dev/models/updatewatchlistrequest_union.py +134 -0
- finance_dev/models/upgradesdowngradesresponse.py +98 -0
- finance_dev/models/usaspendingresponse.py +222 -0
- finance_dev/models/usptopatentsresponse.py +134 -0
- finance_dev/models/visaapplicationsresponse.py +228 -0
- finance_dev/models/watchlist.py +68 -0
- finance_dev/models/watchlistrequest.py +43 -0
- finance_dev/models/watchlistresponse.py +44 -0
- finance_dev/news_sdk.py +829 -0
- finance_dev/options.py +3443 -0
- finance_dev/orders.py +1907 -0
- finance_dev/ownership.py +1386 -0
- finance_dev/predictions.py +29 -0
- finance_dev/predictions_orders.py +852 -0
- finance_dev/py.typed +1 -0
- finance_dev/sdk.py +347 -0
- finance_dev/sdkconfiguration.py +50 -0
- finance_dev/signals.py +338 -0
- finance_dev/stocks.py +3131 -0
- finance_dev/technicalanalysis_sdk.py +1137 -0
- finance_dev/types/__init__.py +25 -0
- finance_dev/types/base64fileinput.py +44 -0
- finance_dev/types/basemodel.py +78 -0
- finance_dev/utils/__init__.py +181 -0
- finance_dev/utils/annotations.py +80 -0
- finance_dev/utils/datetimes.py +42 -0
- finance_dev/utils/dynamic_imports.py +55 -0
- finance_dev/utils/enums.py +135 -0
- finance_dev/utils/eventstreaming.py +327 -0
- finance_dev/utils/forms.py +240 -0
- finance_dev/utils/headers.py +137 -0
- finance_dev/utils/logger.py +23 -0
- finance_dev/utils/metadata.py +120 -0
- finance_dev/utils/queryparams.py +218 -0
- finance_dev/utils/requestbodies.py +68 -0
- finance_dev/utils/retries.py +373 -0
- finance_dev/utils/security.py +199 -0
- finance_dev/utils/serializers.py +327 -0
- finance_dev/utils/unmarshal_json_response.py +39 -0
- finance_dev/utils/url.py +155 -0
- finance_dev/utils/values.py +143 -0
- finance_dev/watchlist_sdk.py +1583 -0
- finance_dev/websocket/__init__.py +57 -0
- finance_dev/websocket/account.py +5 -0
- finance_dev/websocket/auth.py +124 -0
- finance_dev/websocket/chart.py +5 -0
- finance_dev/websocket/codec.py +66 -0
- finance_dev/websocket/config.py +52 -0
- finance_dev/websocket/errors.py +54 -0
- finance_dev/websocket/market.py +5 -0
- finance_dev/websocket/models/__init__.py +52 -0
- finance_dev/websocket/models/account.py +60 -0
- finance_dev/websocket/models/chart.py +44 -0
- finance_dev/websocket/models/common.py +85 -0
- finance_dev/websocket/models/market.py +113 -0
- finance_dev/websocket/resources.py +327 -0
- finance_dev/websocket/sdk.py +13 -0
- finance_dev/websocket/transport/async_connection.py +493 -0
- finance_dev/websocket/transport/base.py +78 -0
- finance_dev/websocket/transport/sync_connection.py +470 -0
- finance_dev-0.9.0.dist-info/METADATA +913 -0
- finance_dev-0.9.0.dist-info/RECORD +486 -0
- finance_dev-0.9.0.dist-info/WHEEL +5 -0
- finance_dev-0.9.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 1e77bb9515b6
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .indexbarresponse import IndexBarResponse, IndexBarResponseTypedDict
|
|
7
|
+
from .indicesidentifiertype import IndicesIdentifierType
|
|
8
|
+
from enum import Enum
|
|
9
|
+
from finance_dev import models, utils
|
|
10
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
11
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import field_serializer, model_serializer
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class GetIndexBarPrecision(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
19
|
+
r"""How long each bar covers. Pair with `period` to set the exact size (e.g. `precision=Minutes`, `period=5` = 5-minute bars). Allowed values:
|
|
20
|
+
- `Minutes` — minute bars (combine with `period` for 1, 5, 15, 30-minute candles).
|
|
21
|
+
- `Hours` — hour bars (combine with `period` for 1, 2, 4-hour candles).
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
MINUTES = "Minutes"
|
|
25
|
+
HOURS = "Hours"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class GetIndexBarRequestTypedDict(TypedDict):
|
|
29
|
+
identifier: str
|
|
30
|
+
r"""Index identifier to query. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM` for the S&P 500 in the CBOE CSMI group). For other identifier types (CUSIP, ISIN, etc.), set `identifierType` accordingly."""
|
|
31
|
+
end_time: str
|
|
32
|
+
r"""End time for the bar window. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/22/2025 10:30 am`)."""
|
|
33
|
+
identifier_type: NotRequired[IndicesIdentifierType]
|
|
34
|
+
r"""How to interpret the value you sent in `identifier`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values."""
|
|
35
|
+
precision: NotRequired[GetIndexBarPrecision]
|
|
36
|
+
r"""How long each bar covers. Pair with `period` to set the exact size (e.g. `precision=Minutes`, `period=5` = 5-minute bars). Allowed values:
|
|
37
|
+
- `Minutes` — minute bars (combine with `period` for 1, 5, 15, 30-minute candles).
|
|
38
|
+
- `Hours` — hour bars (combine with `period` for 1, 2, 4-hour candles).
|
|
39
|
+
"""
|
|
40
|
+
period: NotRequired[int]
|
|
41
|
+
r"""Multiplier on `precision` to set the bar size. Defaults to `1`. Examples: `precision=Minutes` + `period=5` = 5-minute bars; `precision=Hours` + `period=4` = 4-hour bars."""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class GetIndexBarRequest(BaseModel):
|
|
45
|
+
identifier: Annotated[
|
|
46
|
+
str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
|
|
47
|
+
]
|
|
48
|
+
r"""Index identifier to query. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM` for the S&P 500 in the CBOE CSMI group). For other identifier types (CUSIP, ISIN, etc.), set `identifierType` accordingly."""
|
|
49
|
+
|
|
50
|
+
end_time: Annotated[
|
|
51
|
+
str,
|
|
52
|
+
pydantic.Field(alias="endTime"),
|
|
53
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
54
|
+
]
|
|
55
|
+
r"""End time for the bar window. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/22/2025 10:30 am`)."""
|
|
56
|
+
|
|
57
|
+
identifier_type: Annotated[
|
|
58
|
+
Optional[IndicesIdentifierType],
|
|
59
|
+
pydantic.Field(alias="identifierType"),
|
|
60
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
61
|
+
] = IndicesIdentifierType.SYMBOL
|
|
62
|
+
r"""How to interpret the value you sent in `identifier`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values."""
|
|
63
|
+
|
|
64
|
+
precision: Annotated[
|
|
65
|
+
Optional[GetIndexBarPrecision],
|
|
66
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
67
|
+
] = None
|
|
68
|
+
r"""How long each bar covers. Pair with `period` to set the exact size (e.g. `precision=Minutes`, `period=5` = 5-minute bars). Allowed values:
|
|
69
|
+
- `Minutes` — minute bars (combine with `period` for 1, 5, 15, 30-minute candles).
|
|
70
|
+
- `Hours` — hour bars (combine with `period` for 1, 2, 4-hour candles).
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
period: Annotated[
|
|
74
|
+
Optional[int],
|
|
75
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
76
|
+
] = None
|
|
77
|
+
r"""Multiplier on `precision` to set the bar size. Defaults to `1`. Examples: `precision=Minutes` + `period=5` = 5-minute bars; `precision=Hours` + `period=4` = 4-hour bars."""
|
|
78
|
+
|
|
79
|
+
@field_serializer("identifier_type")
|
|
80
|
+
def serialize_identifier_type(self, value):
|
|
81
|
+
if isinstance(value, str):
|
|
82
|
+
try:
|
|
83
|
+
return models.IndicesIdentifierType(value)
|
|
84
|
+
except ValueError:
|
|
85
|
+
return value
|
|
86
|
+
return value
|
|
87
|
+
|
|
88
|
+
@field_serializer("precision")
|
|
89
|
+
def serialize_precision(self, value):
|
|
90
|
+
if isinstance(value, str):
|
|
91
|
+
try:
|
|
92
|
+
return models.GetIndexBarPrecision(value)
|
|
93
|
+
except ValueError:
|
|
94
|
+
return value
|
|
95
|
+
return value
|
|
96
|
+
|
|
97
|
+
@model_serializer(mode="wrap")
|
|
98
|
+
def serialize_model(self, handler):
|
|
99
|
+
optional_fields = set(["identifierType", "precision", "period"])
|
|
100
|
+
serialized = handler(self)
|
|
101
|
+
m = {}
|
|
102
|
+
|
|
103
|
+
for n, f in type(self).model_fields.items():
|
|
104
|
+
k = f.alias or n
|
|
105
|
+
val = serialized.get(k, serialized.get(n))
|
|
106
|
+
|
|
107
|
+
if val != UNSET_SENTINEL:
|
|
108
|
+
if val is not None or k not in optional_fields:
|
|
109
|
+
m[k] = val
|
|
110
|
+
|
|
111
|
+
return m
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class GetIndexBarResponseTypedDict(TypedDict):
|
|
115
|
+
http_meta: HTTPMetadataTypedDict
|
|
116
|
+
index_bar_response: NotRequired[IndexBarResponseTypedDict]
|
|
117
|
+
r"""Successful response"""
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class GetIndexBarResponse(BaseModel):
|
|
121
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
122
|
+
|
|
123
|
+
index_bar_response: Optional[IndexBarResponse] = None
|
|
124
|
+
r"""Successful response"""
|
|
125
|
+
|
|
126
|
+
@model_serializer(mode="wrap")
|
|
127
|
+
def serialize_model(self, handler):
|
|
128
|
+
optional_fields = set(["IndexBarResponse"])
|
|
129
|
+
serialized = handler(self)
|
|
130
|
+
m = {}
|
|
131
|
+
|
|
132
|
+
for n, f in type(self).model_fields.items():
|
|
133
|
+
k = f.alias or n
|
|
134
|
+
val = serialized.get(k, serialized.get(n))
|
|
135
|
+
|
|
136
|
+
if val != UNSET_SENTINEL:
|
|
137
|
+
if val is not None or k not in optional_fields:
|
|
138
|
+
m[k] = val
|
|
139
|
+
|
|
140
|
+
return m
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: b7fb62657df6
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .indexbarsresponse import IndexBarsResponse, IndexBarsResponseTypedDict
|
|
7
|
+
from .indicesidentifiertype import IndicesIdentifierType
|
|
8
|
+
from enum import Enum
|
|
9
|
+
from finance_dev import models, utils
|
|
10
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
11
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import field_serializer, model_serializer
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class GetIndexBarsPrecision(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
19
|
+
r"""How long each bar covers. Pair with `period` to set the exact size (e.g. `precision=Minutes`, `period=5` = 5-minute bars). Allowed values:
|
|
20
|
+
- `Minutes` — minute bars (combine with `period` for 1, 5, 15, 30-minute candles).
|
|
21
|
+
- `Hours` — hour bars (combine with `period` for 1, 2, 4-hour candles).
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
MINUTES = "Minutes"
|
|
25
|
+
HOURS = "Hours"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class GetIndexBarsRequestTypedDict(TypedDict):
|
|
29
|
+
identifier: str
|
|
30
|
+
r"""Index identifier to query. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM`). For other identifier types, set `identifierType` accordingly."""
|
|
31
|
+
start_time: str
|
|
32
|
+
r"""Start of the bars window. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/22/2025 9:30 am`)."""
|
|
33
|
+
end_time: str
|
|
34
|
+
r"""End of the bars window. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/22/2025 4:00 pm`)."""
|
|
35
|
+
identifier_type: NotRequired[IndicesIdentifierType]
|
|
36
|
+
r"""How to interpret the value you sent in `identifier`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values."""
|
|
37
|
+
precision: NotRequired[GetIndexBarsPrecision]
|
|
38
|
+
r"""How long each bar covers. Pair with `period` to set the exact size (e.g. `precision=Minutes`, `period=5` = 5-minute bars). Allowed values:
|
|
39
|
+
- `Minutes` — minute bars (combine with `period` for 1, 5, 15, 30-minute candles).
|
|
40
|
+
- `Hours` — hour bars (combine with `period` for 1, 2, 4-hour candles).
|
|
41
|
+
"""
|
|
42
|
+
period: NotRequired[int]
|
|
43
|
+
r"""Multiplier on `precision` to set the bar size. Defaults to `1`. Examples: `precision=Minutes` + `period=5` = 5-minute bars; `precision=Hours` + `period=4` = 4-hour bars."""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class GetIndexBarsRequest(BaseModel):
|
|
47
|
+
identifier: Annotated[
|
|
48
|
+
str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
|
|
49
|
+
]
|
|
50
|
+
r"""Index identifier to query. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM`). For other identifier types, set `identifierType` accordingly."""
|
|
51
|
+
|
|
52
|
+
start_time: Annotated[
|
|
53
|
+
str,
|
|
54
|
+
pydantic.Field(alias="startTime"),
|
|
55
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
56
|
+
]
|
|
57
|
+
r"""Start of the bars window. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/22/2025 9:30 am`)."""
|
|
58
|
+
|
|
59
|
+
end_time: Annotated[
|
|
60
|
+
str,
|
|
61
|
+
pydantic.Field(alias="endTime"),
|
|
62
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
63
|
+
]
|
|
64
|
+
r"""End of the bars window. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/22/2025 4:00 pm`)."""
|
|
65
|
+
|
|
66
|
+
identifier_type: Annotated[
|
|
67
|
+
Optional[IndicesIdentifierType],
|
|
68
|
+
pydantic.Field(alias="identifierType"),
|
|
69
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
70
|
+
] = IndicesIdentifierType.SYMBOL
|
|
71
|
+
r"""How to interpret the value you sent in `identifier`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values."""
|
|
72
|
+
|
|
73
|
+
precision: Annotated[
|
|
74
|
+
Optional[GetIndexBarsPrecision],
|
|
75
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
76
|
+
] = None
|
|
77
|
+
r"""How long each bar covers. Pair with `period` to set the exact size (e.g. `precision=Minutes`, `period=5` = 5-minute bars). Allowed values:
|
|
78
|
+
- `Minutes` — minute bars (combine with `period` for 1, 5, 15, 30-minute candles).
|
|
79
|
+
- `Hours` — hour bars (combine with `period` for 1, 2, 4-hour candles).
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
period: Annotated[
|
|
83
|
+
Optional[int],
|
|
84
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
85
|
+
] = None
|
|
86
|
+
r"""Multiplier on `precision` to set the bar size. Defaults to `1`. Examples: `precision=Minutes` + `period=5` = 5-minute bars; `precision=Hours` + `period=4` = 4-hour bars."""
|
|
87
|
+
|
|
88
|
+
@field_serializer("identifier_type")
|
|
89
|
+
def serialize_identifier_type(self, value):
|
|
90
|
+
if isinstance(value, str):
|
|
91
|
+
try:
|
|
92
|
+
return models.IndicesIdentifierType(value)
|
|
93
|
+
except ValueError:
|
|
94
|
+
return value
|
|
95
|
+
return value
|
|
96
|
+
|
|
97
|
+
@field_serializer("precision")
|
|
98
|
+
def serialize_precision(self, value):
|
|
99
|
+
if isinstance(value, str):
|
|
100
|
+
try:
|
|
101
|
+
return models.GetIndexBarsPrecision(value)
|
|
102
|
+
except ValueError:
|
|
103
|
+
return value
|
|
104
|
+
return value
|
|
105
|
+
|
|
106
|
+
@model_serializer(mode="wrap")
|
|
107
|
+
def serialize_model(self, handler):
|
|
108
|
+
optional_fields = set(["identifierType", "precision", "period"])
|
|
109
|
+
serialized = handler(self)
|
|
110
|
+
m = {}
|
|
111
|
+
|
|
112
|
+
for n, f in type(self).model_fields.items():
|
|
113
|
+
k = f.alias or n
|
|
114
|
+
val = serialized.get(k, serialized.get(n))
|
|
115
|
+
|
|
116
|
+
if val != UNSET_SENTINEL:
|
|
117
|
+
if val is not None or k not in optional_fields:
|
|
118
|
+
m[k] = val
|
|
119
|
+
|
|
120
|
+
return m
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class GetIndexBarsResponseTypedDict(TypedDict):
|
|
124
|
+
http_meta: HTTPMetadataTypedDict
|
|
125
|
+
index_bars_response: NotRequired[IndexBarsResponseTypedDict]
|
|
126
|
+
r"""Successful response"""
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class GetIndexBarsResponse(BaseModel):
|
|
130
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
131
|
+
|
|
132
|
+
index_bars_response: Optional[IndexBarsResponse] = None
|
|
133
|
+
r"""Successful response"""
|
|
134
|
+
|
|
135
|
+
@model_serializer(mode="wrap")
|
|
136
|
+
def serialize_model(self, handler):
|
|
137
|
+
optional_fields = set(["IndexBarsResponse"])
|
|
138
|
+
serialized = handler(self)
|
|
139
|
+
m = {}
|
|
140
|
+
|
|
141
|
+
for n, f in type(self).model_fields.items():
|
|
142
|
+
k = f.alias or n
|
|
143
|
+
val = serialized.get(k, serialized.get(n))
|
|
144
|
+
|
|
145
|
+
if val != UNSET_SENTINEL:
|
|
146
|
+
if val is not None or k not in optional_fields:
|
|
147
|
+
m[k] = val
|
|
148
|
+
|
|
149
|
+
return m
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: b05035f7feed
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .indexchartbarsresponse import (
|
|
7
|
+
IndexChartBarsResponse,
|
|
8
|
+
IndexChartBarsResponseTypedDict,
|
|
9
|
+
)
|
|
10
|
+
from .indicesidentifiertype import IndicesIdentifierType
|
|
11
|
+
from enum import Enum
|
|
12
|
+
from finance_dev import models, utils
|
|
13
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
14
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
15
|
+
import pydantic
|
|
16
|
+
from pydantic import field_serializer, model_serializer
|
|
17
|
+
from typing import Optional
|
|
18
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class GetIndexChartBarsPrecision(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
22
|
+
r"""How long each chart bar covers. Pair with `period` to set the exact size. Note the singular form (different from `/v1/indices/bar` and `/v1/indices/bars`). Allowed values:
|
|
23
|
+
- `Minute` — minute bars (intraday).
|
|
24
|
+
- `Hour` — hour bars.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
MINUTE = "Minute"
|
|
28
|
+
HOUR = "Hour"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class GetIndexChartBarsRequestTypedDict(TypedDict):
|
|
32
|
+
identifier: str
|
|
33
|
+
r"""Index identifier to query. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM`). For other identifier types, set `identifierType` accordingly."""
|
|
34
|
+
start_time: str
|
|
35
|
+
r"""Start of the chart range, inclusive. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/15/2025 9:00 am`)."""
|
|
36
|
+
end_time: str
|
|
37
|
+
r"""End of the chart range, inclusive. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/15/2025 9:30 am`)."""
|
|
38
|
+
identifier_type: NotRequired[IndicesIdentifierType]
|
|
39
|
+
r"""How to interpret the value you sent in `identifier`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values."""
|
|
40
|
+
precision: NotRequired[GetIndexChartBarsPrecision]
|
|
41
|
+
r"""How long each chart bar covers. Pair with `period` to set the exact size. Note the singular form (different from `/v1/indices/bar` and `/v1/indices/bars`). Allowed values:
|
|
42
|
+
- `Minute` — minute bars (intraday).
|
|
43
|
+
- `Hour` — hour bars.
|
|
44
|
+
"""
|
|
45
|
+
period: NotRequired[int]
|
|
46
|
+
r"""Multiplier on `precision` to set the bar size. Defaults to `1`. Example: `precision=Minute` + `period=15` = 15-minute bars."""
|
|
47
|
+
adjustment_method: NotRequired[str]
|
|
48
|
+
r"""How to adjust historical prices for corporate actions like dividends and splits. Pass the literal value supported by the upstream data provider. Omit to leave prices unadjusted."""
|
|
49
|
+
include_extended: NotRequired[bool]
|
|
50
|
+
r"""Include pre-market and after-hours sessions in the returned chart bars. Defaults to `false` (regular hours only). Set `true` when you want a continuous extended-session chart."""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class GetIndexChartBarsRequest(BaseModel):
|
|
54
|
+
identifier: Annotated[
|
|
55
|
+
str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
|
|
56
|
+
]
|
|
57
|
+
r"""Index identifier to query. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM`). For other identifier types, set `identifierType` accordingly."""
|
|
58
|
+
|
|
59
|
+
start_time: Annotated[
|
|
60
|
+
str,
|
|
61
|
+
pydantic.Field(alias="startTime"),
|
|
62
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
63
|
+
]
|
|
64
|
+
r"""Start of the chart range, inclusive. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/15/2025 9:00 am`)."""
|
|
65
|
+
|
|
66
|
+
end_time: Annotated[
|
|
67
|
+
str,
|
|
68
|
+
pydantic.Field(alias="endTime"),
|
|
69
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
70
|
+
]
|
|
71
|
+
r"""End of the chart range, inclusive. Format: `MM/DD/YYYY hh:mm am/pm` in the index's native timezone (e.g. `12/15/2025 9:30 am`)."""
|
|
72
|
+
|
|
73
|
+
identifier_type: Annotated[
|
|
74
|
+
Optional[IndicesIdentifierType],
|
|
75
|
+
pydantic.Field(alias="identifierType"),
|
|
76
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
77
|
+
] = IndicesIdentifierType.SYMBOL
|
|
78
|
+
r"""How to interpret the value you sent in `identifier`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values."""
|
|
79
|
+
|
|
80
|
+
precision: Annotated[
|
|
81
|
+
Optional[GetIndexChartBarsPrecision],
|
|
82
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
83
|
+
] = None
|
|
84
|
+
r"""How long each chart bar covers. Pair with `period` to set the exact size. Note the singular form (different from `/v1/indices/bar` and `/v1/indices/bars`). Allowed values:
|
|
85
|
+
- `Minute` — minute bars (intraday).
|
|
86
|
+
- `Hour` — hour bars.
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
period: Annotated[
|
|
90
|
+
Optional[int],
|
|
91
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
92
|
+
] = None
|
|
93
|
+
r"""Multiplier on `precision` to set the bar size. Defaults to `1`. Example: `precision=Minute` + `period=15` = 15-minute bars."""
|
|
94
|
+
|
|
95
|
+
adjustment_method: Annotated[
|
|
96
|
+
Optional[str],
|
|
97
|
+
pydantic.Field(alias="adjustmentMethod"),
|
|
98
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
99
|
+
] = None
|
|
100
|
+
r"""How to adjust historical prices for corporate actions like dividends and splits. Pass the literal value supported by the upstream data provider. Omit to leave prices unadjusted."""
|
|
101
|
+
|
|
102
|
+
include_extended: Annotated[
|
|
103
|
+
Optional[bool],
|
|
104
|
+
pydantic.Field(alias="includeExtended"),
|
|
105
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
106
|
+
] = False
|
|
107
|
+
r"""Include pre-market and after-hours sessions in the returned chart bars. Defaults to `false` (regular hours only). Set `true` when you want a continuous extended-session chart."""
|
|
108
|
+
|
|
109
|
+
@field_serializer("identifier_type")
|
|
110
|
+
def serialize_identifier_type(self, value):
|
|
111
|
+
if isinstance(value, str):
|
|
112
|
+
try:
|
|
113
|
+
return models.IndicesIdentifierType(value)
|
|
114
|
+
except ValueError:
|
|
115
|
+
return value
|
|
116
|
+
return value
|
|
117
|
+
|
|
118
|
+
@field_serializer("precision")
|
|
119
|
+
def serialize_precision(self, value):
|
|
120
|
+
if isinstance(value, str):
|
|
121
|
+
try:
|
|
122
|
+
return models.GetIndexChartBarsPrecision(value)
|
|
123
|
+
except ValueError:
|
|
124
|
+
return value
|
|
125
|
+
return value
|
|
126
|
+
|
|
127
|
+
@model_serializer(mode="wrap")
|
|
128
|
+
def serialize_model(self, handler):
|
|
129
|
+
optional_fields = set(
|
|
130
|
+
[
|
|
131
|
+
"identifierType",
|
|
132
|
+
"precision",
|
|
133
|
+
"period",
|
|
134
|
+
"adjustmentMethod",
|
|
135
|
+
"includeExtended",
|
|
136
|
+
]
|
|
137
|
+
)
|
|
138
|
+
serialized = handler(self)
|
|
139
|
+
m = {}
|
|
140
|
+
|
|
141
|
+
for n, f in type(self).model_fields.items():
|
|
142
|
+
k = f.alias or n
|
|
143
|
+
val = serialized.get(k, serialized.get(n))
|
|
144
|
+
|
|
145
|
+
if val != UNSET_SENTINEL:
|
|
146
|
+
if val is not None or k not in optional_fields:
|
|
147
|
+
m[k] = val
|
|
148
|
+
|
|
149
|
+
return m
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class GetIndexChartBarsResponseTypedDict(TypedDict):
|
|
153
|
+
http_meta: HTTPMetadataTypedDict
|
|
154
|
+
index_chart_bars_response: NotRequired[IndexChartBarsResponseTypedDict]
|
|
155
|
+
r"""Successful response"""
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class GetIndexChartBarsResponse(BaseModel):
|
|
159
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
160
|
+
|
|
161
|
+
index_chart_bars_response: Optional[IndexChartBarsResponse] = None
|
|
162
|
+
r"""Successful response"""
|
|
163
|
+
|
|
164
|
+
@model_serializer(mode="wrap")
|
|
165
|
+
def serialize_model(self, handler):
|
|
166
|
+
optional_fields = set(["IndexChartBarsResponse"])
|
|
167
|
+
serialized = handler(self)
|
|
168
|
+
m = {}
|
|
169
|
+
|
|
170
|
+
for n, f in type(self).model_fields.items():
|
|
171
|
+
k = f.alias or n
|
|
172
|
+
val = serialized.get(k, serialized.get(n))
|
|
173
|
+
|
|
174
|
+
if val != UNSET_SENTINEL:
|
|
175
|
+
if val is not None or k not in optional_fields:
|
|
176
|
+
m[k] = val
|
|
177
|
+
|
|
178
|
+
return m
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 37c0757146cf
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .indicesidentifiertype import IndicesIdentifierType
|
|
7
|
+
from .indicesrealtimevaluesresponse import (
|
|
8
|
+
IndicesRealtimeValuesResponse,
|
|
9
|
+
IndicesRealtimeValuesResponseTypedDict,
|
|
10
|
+
)
|
|
11
|
+
from finance_dev import models
|
|
12
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
13
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
14
|
+
import pydantic
|
|
15
|
+
from pydantic import field_serializer, model_serializer
|
|
16
|
+
from typing import Optional
|
|
17
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class GetIndexRealtimeValuesRequestTypedDict(TypedDict):
|
|
21
|
+
identifiers: str
|
|
22
|
+
r"""One or more index identifiers to fetch real-time values for, comma-separated. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM,COMP.IND_CBOM,DJI.IND_DJI`). All identifiers in one request must be the same type (set via `identifierType`)."""
|
|
23
|
+
identifier_type: NotRequired[IndicesIdentifierType]
|
|
24
|
+
r"""How to interpret each value in `identifiers`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values. All identifiers in one request must be the same type."""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class GetIndexRealtimeValuesRequest(BaseModel):
|
|
28
|
+
identifiers: Annotated[
|
|
29
|
+
str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
|
|
30
|
+
]
|
|
31
|
+
r"""One or more index identifiers to fetch real-time values for, comma-separated. For `Symbol`-type identifiers, use the full `<SYMBOL>.<GROUP>` form (e.g. `SPX.IND_CBOM,COMP.IND_CBOM,DJI.IND_DJI`). All identifiers in one request must be the same type (set via `identifierType`)."""
|
|
32
|
+
|
|
33
|
+
identifier_type: Annotated[
|
|
34
|
+
Optional[IndicesIdentifierType],
|
|
35
|
+
pydantic.Field(alias="identifierType"),
|
|
36
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
37
|
+
] = IndicesIdentifierType.SYMBOL
|
|
38
|
+
r"""How to interpret each value in `identifiers`. Defaults to `Symbol`. See `IndicesIdentifierType` for the full set of accepted values. All identifiers in one request must be the same type."""
|
|
39
|
+
|
|
40
|
+
@field_serializer("identifier_type")
|
|
41
|
+
def serialize_identifier_type(self, value):
|
|
42
|
+
if isinstance(value, str):
|
|
43
|
+
try:
|
|
44
|
+
return models.IndicesIdentifierType(value)
|
|
45
|
+
except ValueError:
|
|
46
|
+
return value
|
|
47
|
+
return value
|
|
48
|
+
|
|
49
|
+
@model_serializer(mode="wrap")
|
|
50
|
+
def serialize_model(self, handler):
|
|
51
|
+
optional_fields = set(["identifierType"])
|
|
52
|
+
serialized = handler(self)
|
|
53
|
+
m = {}
|
|
54
|
+
|
|
55
|
+
for n, f in type(self).model_fields.items():
|
|
56
|
+
k = f.alias or n
|
|
57
|
+
val = serialized.get(k, serialized.get(n))
|
|
58
|
+
|
|
59
|
+
if val != UNSET_SENTINEL:
|
|
60
|
+
if val is not None or k not in optional_fields:
|
|
61
|
+
m[k] = val
|
|
62
|
+
|
|
63
|
+
return m
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class GetIndexRealtimeValuesResponseTypedDict(TypedDict):
|
|
67
|
+
http_meta: HTTPMetadataTypedDict
|
|
68
|
+
indices_realtime_values_response: NotRequired[
|
|
69
|
+
IndicesRealtimeValuesResponseTypedDict
|
|
70
|
+
]
|
|
71
|
+
r"""Successful response. Each item mirrors the single-index realtime shape: identifier, index metadata, and a value object with OHLC, 52-week range, and change fields."""
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class GetIndexRealtimeValuesResponse(BaseModel):
|
|
75
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
76
|
+
|
|
77
|
+
indices_realtime_values_response: Optional[IndicesRealtimeValuesResponse] = None
|
|
78
|
+
r"""Successful response. Each item mirrors the single-index realtime shape: identifier, index metadata, and a value object with OHLC, 52-week range, and change fields."""
|
|
79
|
+
|
|
80
|
+
@model_serializer(mode="wrap")
|
|
81
|
+
def serialize_model(self, handler):
|
|
82
|
+
optional_fields = set(["IndicesRealtimeValuesResponse"])
|
|
83
|
+
serialized = handler(self)
|
|
84
|
+
m = {}
|
|
85
|
+
|
|
86
|
+
for n, f in type(self).model_fields.items():
|
|
87
|
+
k = f.alias or n
|
|
88
|
+
val = serialized.get(k, serialized.get(n))
|
|
89
|
+
|
|
90
|
+
if val != UNSET_SENTINEL:
|
|
91
|
+
if val is not None or k not in optional_fields:
|
|
92
|
+
m[k] = val
|
|
93
|
+
|
|
94
|
+
return m
|