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,308 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: d7732ad18976
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .optionsnapshotcontractdetails import (
|
|
6
|
+
OptionSnapshotContractDetails,
|
|
7
|
+
OptionSnapshotContractDetailsTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from .optionsnapshotdaybar import OptionSnapshotDayBar, OptionSnapshotDayBarTypedDict
|
|
10
|
+
from .optionsnapshotgreeks import OptionSnapshotGreeks, OptionSnapshotGreeksTypedDict
|
|
11
|
+
from .optionsnapshotlastquote import (
|
|
12
|
+
OptionSnapshotLastQuote,
|
|
13
|
+
OptionSnapshotLastQuoteTypedDict,
|
|
14
|
+
)
|
|
15
|
+
from .optionsnapshotlasttrade import (
|
|
16
|
+
OptionSnapshotLastTrade,
|
|
17
|
+
OptionSnapshotLastTradeTypedDict,
|
|
18
|
+
)
|
|
19
|
+
from .optionsnapshotunderlying import (
|
|
20
|
+
OptionSnapshotUnderlying,
|
|
21
|
+
OptionSnapshotUnderlyingTypedDict,
|
|
22
|
+
)
|
|
23
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
24
|
+
import pydantic
|
|
25
|
+
from pydantic import model_serializer
|
|
26
|
+
from typing import List, Optional
|
|
27
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class LastMinuteTypedDict(TypedDict):
|
|
31
|
+
r"""Last minute aggregate"""
|
|
32
|
+
|
|
33
|
+
close: NotRequired[float]
|
|
34
|
+
r"""Close price of the last minute aggregate."""
|
|
35
|
+
high: NotRequired[float]
|
|
36
|
+
r"""High price of the last minute aggregate."""
|
|
37
|
+
low: NotRequired[float]
|
|
38
|
+
r"""Low price of the last minute aggregate."""
|
|
39
|
+
open: NotRequired[float]
|
|
40
|
+
r"""Open price of the last minute aggregate."""
|
|
41
|
+
transactions: NotRequired[int]
|
|
42
|
+
r"""Number of transactions in the last minute aggregate."""
|
|
43
|
+
volume: NotRequired[int]
|
|
44
|
+
r"""Trading volume in the last minute aggregate."""
|
|
45
|
+
vwap: NotRequired[float]
|
|
46
|
+
r"""Volume-weighted average price of the last minute aggregate."""
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class LastMinute(BaseModel):
|
|
50
|
+
r"""Last minute aggregate"""
|
|
51
|
+
|
|
52
|
+
close: Optional[float] = None
|
|
53
|
+
r"""Close price of the last minute aggregate."""
|
|
54
|
+
|
|
55
|
+
high: Optional[float] = None
|
|
56
|
+
r"""High price of the last minute aggregate."""
|
|
57
|
+
|
|
58
|
+
low: Optional[float] = None
|
|
59
|
+
r"""Low price of the last minute aggregate."""
|
|
60
|
+
|
|
61
|
+
open: Optional[float] = None
|
|
62
|
+
r"""Open price of the last minute aggregate."""
|
|
63
|
+
|
|
64
|
+
transactions: Optional[int] = None
|
|
65
|
+
r"""Number of transactions in the last minute aggregate."""
|
|
66
|
+
|
|
67
|
+
volume: Optional[int] = None
|
|
68
|
+
r"""Trading volume in the last minute aggregate."""
|
|
69
|
+
|
|
70
|
+
vwap: Optional[float] = None
|
|
71
|
+
r"""Volume-weighted average price of the last minute aggregate."""
|
|
72
|
+
|
|
73
|
+
@model_serializer(mode="wrap")
|
|
74
|
+
def serialize_model(self, handler):
|
|
75
|
+
optional_fields = set(
|
|
76
|
+
["close", "high", "low", "open", "transactions", "volume", "vwap"]
|
|
77
|
+
)
|
|
78
|
+
serialized = handler(self)
|
|
79
|
+
m = {}
|
|
80
|
+
|
|
81
|
+
for n, f in type(self).model_fields.items():
|
|
82
|
+
k = f.alias or n
|
|
83
|
+
val = serialized.get(k, serialized.get(n))
|
|
84
|
+
|
|
85
|
+
if val != UNSET_SENTINEL:
|
|
86
|
+
if val is not None or k not in optional_fields:
|
|
87
|
+
m[k] = val
|
|
88
|
+
|
|
89
|
+
return m
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class UnifiedSnapshotResponseResultTypedDict(TypedDict):
|
|
93
|
+
break_even_price: NotRequired[float]
|
|
94
|
+
r"""Options-only break-even price when available"""
|
|
95
|
+
details: NotRequired[OptionSnapshotContractDetailsTypedDict]
|
|
96
|
+
r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
|
|
97
|
+
error: NotRequired[str]
|
|
98
|
+
r"""Per-item error, when returned"""
|
|
99
|
+
fmv: NotRequired[float]
|
|
100
|
+
r"""Fair market value"""
|
|
101
|
+
fmv_last_updated: NotRequired[int]
|
|
102
|
+
r"""FMV last updated timestamp"""
|
|
103
|
+
greeks: NotRequired[OptionSnapshotGreeksTypedDict]
|
|
104
|
+
r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
|
|
105
|
+
implied_volatility: NotRequired[float]
|
|
106
|
+
r"""Options implied volatility when available"""
|
|
107
|
+
last_minute: NotRequired[LastMinuteTypedDict]
|
|
108
|
+
r"""Last minute aggregate"""
|
|
109
|
+
last_quote: NotRequired[OptionSnapshotLastQuoteTypedDict]
|
|
110
|
+
r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
|
|
111
|
+
last_trade: NotRequired[OptionSnapshotLastTradeTypedDict]
|
|
112
|
+
r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
|
|
113
|
+
last_updated: NotRequired[int]
|
|
114
|
+
r"""Item-level last updated timestamp, when available"""
|
|
115
|
+
market_status: NotRequired[str]
|
|
116
|
+
r"""Market status"""
|
|
117
|
+
message: NotRequired[str]
|
|
118
|
+
r"""Per-item message, when returned"""
|
|
119
|
+
name: NotRequired[str]
|
|
120
|
+
r"""Company name"""
|
|
121
|
+
open_interest: NotRequired[int]
|
|
122
|
+
r"""Options open interest when available"""
|
|
123
|
+
session: NotRequired[OptionSnapshotDayBarTypedDict]
|
|
124
|
+
r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
|
|
125
|
+
ticker: NotRequired[str]
|
|
126
|
+
r"""Ticker symbol"""
|
|
127
|
+
timeframe: NotRequired[str]
|
|
128
|
+
r"""Timeframe for the item, when available"""
|
|
129
|
+
type: NotRequired[str]
|
|
130
|
+
r"""Asset class returned by the provider, such as stocks or options."""
|
|
131
|
+
underlying_asset: NotRequired[OptionSnapshotUnderlyingTypedDict]
|
|
132
|
+
r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
|
|
133
|
+
value: NotRequired[float]
|
|
134
|
+
r"""Value field, when available"""
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class UnifiedSnapshotResponseResult(BaseModel):
|
|
138
|
+
break_even_price: Annotated[
|
|
139
|
+
Optional[float], pydantic.Field(alias="breakEvenPrice")
|
|
140
|
+
] = None
|
|
141
|
+
r"""Options-only break-even price when available"""
|
|
142
|
+
|
|
143
|
+
details: Optional[OptionSnapshotContractDetails] = None
|
|
144
|
+
r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
|
|
145
|
+
|
|
146
|
+
error: Optional[str] = None
|
|
147
|
+
r"""Per-item error, when returned"""
|
|
148
|
+
|
|
149
|
+
fmv: Optional[float] = None
|
|
150
|
+
r"""Fair market value"""
|
|
151
|
+
|
|
152
|
+
fmv_last_updated: Annotated[
|
|
153
|
+
Optional[int], pydantic.Field(alias="fmvLastUpdated")
|
|
154
|
+
] = None
|
|
155
|
+
r"""FMV last updated timestamp"""
|
|
156
|
+
|
|
157
|
+
greeks: Optional[OptionSnapshotGreeks] = None
|
|
158
|
+
r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
|
|
159
|
+
|
|
160
|
+
implied_volatility: Annotated[
|
|
161
|
+
Optional[float], pydantic.Field(alias="impliedVolatility")
|
|
162
|
+
] = None
|
|
163
|
+
r"""Options implied volatility when available"""
|
|
164
|
+
|
|
165
|
+
last_minute: Annotated[Optional[LastMinute], pydantic.Field(alias="lastMinute")] = (
|
|
166
|
+
None
|
|
167
|
+
)
|
|
168
|
+
r"""Last minute aggregate"""
|
|
169
|
+
|
|
170
|
+
last_quote: Annotated[
|
|
171
|
+
Optional[OptionSnapshotLastQuote], pydantic.Field(alias="lastQuote")
|
|
172
|
+
] = None
|
|
173
|
+
r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
|
|
174
|
+
|
|
175
|
+
last_trade: Annotated[
|
|
176
|
+
Optional[OptionSnapshotLastTrade], pydantic.Field(alias="lastTrade")
|
|
177
|
+
] = None
|
|
178
|
+
r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
|
|
179
|
+
|
|
180
|
+
last_updated: Annotated[Optional[int], pydantic.Field(alias="lastUpdated")] = None
|
|
181
|
+
r"""Item-level last updated timestamp, when available"""
|
|
182
|
+
|
|
183
|
+
market_status: Annotated[Optional[str], pydantic.Field(alias="marketStatus")] = None
|
|
184
|
+
r"""Market status"""
|
|
185
|
+
|
|
186
|
+
message: Optional[str] = None
|
|
187
|
+
r"""Per-item message, when returned"""
|
|
188
|
+
|
|
189
|
+
name: Optional[str] = None
|
|
190
|
+
r"""Company name"""
|
|
191
|
+
|
|
192
|
+
open_interest: Annotated[Optional[int], pydantic.Field(alias="openInterest")] = None
|
|
193
|
+
r"""Options open interest when available"""
|
|
194
|
+
|
|
195
|
+
session: Optional[OptionSnapshotDayBar] = None
|
|
196
|
+
r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
|
|
197
|
+
|
|
198
|
+
ticker: Optional[str] = None
|
|
199
|
+
r"""Ticker symbol"""
|
|
200
|
+
|
|
201
|
+
timeframe: Optional[str] = None
|
|
202
|
+
r"""Timeframe for the item, when available"""
|
|
203
|
+
|
|
204
|
+
type: Optional[str] = None
|
|
205
|
+
r"""Asset class returned by the provider, such as stocks or options."""
|
|
206
|
+
|
|
207
|
+
underlying_asset: Annotated[
|
|
208
|
+
Optional[OptionSnapshotUnderlying], pydantic.Field(alias="underlyingAsset")
|
|
209
|
+
] = None
|
|
210
|
+
r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
|
|
211
|
+
|
|
212
|
+
value: Optional[float] = None
|
|
213
|
+
r"""Value field, when available"""
|
|
214
|
+
|
|
215
|
+
@model_serializer(mode="wrap")
|
|
216
|
+
def serialize_model(self, handler):
|
|
217
|
+
optional_fields = set(
|
|
218
|
+
[
|
|
219
|
+
"breakEvenPrice",
|
|
220
|
+
"details",
|
|
221
|
+
"error",
|
|
222
|
+
"fmv",
|
|
223
|
+
"fmvLastUpdated",
|
|
224
|
+
"greeks",
|
|
225
|
+
"impliedVolatility",
|
|
226
|
+
"lastMinute",
|
|
227
|
+
"lastQuote",
|
|
228
|
+
"lastTrade",
|
|
229
|
+
"lastUpdated",
|
|
230
|
+
"marketStatus",
|
|
231
|
+
"message",
|
|
232
|
+
"name",
|
|
233
|
+
"openInterest",
|
|
234
|
+
"session",
|
|
235
|
+
"ticker",
|
|
236
|
+
"timeframe",
|
|
237
|
+
"type",
|
|
238
|
+
"underlyingAsset",
|
|
239
|
+
"value",
|
|
240
|
+
]
|
|
241
|
+
)
|
|
242
|
+
serialized = handler(self)
|
|
243
|
+
m = {}
|
|
244
|
+
|
|
245
|
+
for n, f in type(self).model_fields.items():
|
|
246
|
+
k = f.alias or n
|
|
247
|
+
val = serialized.get(k, serialized.get(n))
|
|
248
|
+
|
|
249
|
+
if val != UNSET_SENTINEL:
|
|
250
|
+
if val is not None or k not in optional_fields:
|
|
251
|
+
m[k] = val
|
|
252
|
+
|
|
253
|
+
return m
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class UnifiedSnapshotResponseTypedDict(TypedDict):
|
|
257
|
+
r"""Paginated unified snapshots across asset types, including stocks and options, with last quote, last trade and latest minute aggregate per item."""
|
|
258
|
+
|
|
259
|
+
next_url: NotRequired[str]
|
|
260
|
+
r"""URL for next page of results"""
|
|
261
|
+
request_id: NotRequired[str]
|
|
262
|
+
r"""Unique request ID"""
|
|
263
|
+
results: NotRequired[List[UnifiedSnapshotResponseResultTypedDict]]
|
|
264
|
+
r"""Array of unified snapshots"""
|
|
265
|
+
status: NotRequired[str]
|
|
266
|
+
r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
class UnifiedSnapshotResponse(BaseModel):
|
|
270
|
+
r"""Paginated unified snapshots across asset types, including stocks and options, with last quote, last trade and latest minute aggregate per item."""
|
|
271
|
+
|
|
272
|
+
next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
|
|
273
|
+
r"""URL for next page of results"""
|
|
274
|
+
|
|
275
|
+
request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
|
|
276
|
+
r"""Unique request ID"""
|
|
277
|
+
|
|
278
|
+
results: Optional[List[UnifiedSnapshotResponseResult]] = None
|
|
279
|
+
r"""Array of unified snapshots"""
|
|
280
|
+
|
|
281
|
+
status: Optional[str] = None
|
|
282
|
+
r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
|
|
283
|
+
|
|
284
|
+
@model_serializer(mode="wrap")
|
|
285
|
+
def serialize_model(self, handler):
|
|
286
|
+
optional_fields = set(["nextUrl", "requestId", "results", "status"])
|
|
287
|
+
serialized = handler(self)
|
|
288
|
+
m = {}
|
|
289
|
+
|
|
290
|
+
for n, f in type(self).model_fields.items():
|
|
291
|
+
k = f.alias or n
|
|
292
|
+
val = serialized.get(k, serialized.get(n))
|
|
293
|
+
|
|
294
|
+
if val != UNSET_SENTINEL:
|
|
295
|
+
if val is not None or k not in optional_fields:
|
|
296
|
+
m[k] = val
|
|
297
|
+
|
|
298
|
+
return m
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
try:
|
|
302
|
+
UnifiedSnapshotResponseResult.model_rebuild()
|
|
303
|
+
except NameError:
|
|
304
|
+
pass
|
|
305
|
+
try:
|
|
306
|
+
UnifiedSnapshotResponse.model_rebuild()
|
|
307
|
+
except NameError:
|
|
308
|
+
pass
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: ebd6b51101d5
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .updatewatchlistrequest_union import (
|
|
7
|
+
UpdateWatchlistRequestUnion,
|
|
8
|
+
UpdateWatchlistRequestUnionTypedDict,
|
|
9
|
+
)
|
|
10
|
+
from .watchlist import Watchlist, WatchlistTypedDict
|
|
11
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
12
|
+
from finance_dev.utils import FieldMetadata, PathParamMetadata, RequestMetadata
|
|
13
|
+
import pydantic
|
|
14
|
+
from pydantic import model_serializer
|
|
15
|
+
from typing import Optional
|
|
16
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class UpdateConfigWatchlistByIDRequestTypedDict(TypedDict):
|
|
20
|
+
watchlist_id: int
|
|
21
|
+
r"""The numeric ID of the watchlist to update. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
|
|
22
|
+
update_watchlist_request: UpdateWatchlistRequestUnionTypedDict
|
|
23
|
+
r"""At least one of `name`, `add_symbols`, or `remove_symbols` must be included."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class UpdateConfigWatchlistByIDRequest(BaseModel):
|
|
27
|
+
watchlist_id: Annotated[
|
|
28
|
+
int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
|
29
|
+
]
|
|
30
|
+
r"""The numeric ID of the watchlist to update. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
|
|
31
|
+
|
|
32
|
+
update_watchlist_request: Annotated[
|
|
33
|
+
UpdateWatchlistRequestUnion,
|
|
34
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
|
35
|
+
]
|
|
36
|
+
r"""At least one of `name`, `add_symbols`, or `remove_symbols` must be included."""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class UpdateConfigWatchlistByIDResponseTypedDict(TypedDict):
|
|
40
|
+
http_meta: HTTPMetadataTypedDict
|
|
41
|
+
watchlist: NotRequired[WatchlistTypedDict]
|
|
42
|
+
r"""Watchlist updated. The response contains the full, updated watchlist; check `invalid_symbols` for any submitted symbols that were dropped."""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class UpdateConfigWatchlistByIDResponse(BaseModel):
|
|
46
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
47
|
+
|
|
48
|
+
watchlist: Optional[Watchlist] = None
|
|
49
|
+
r"""Watchlist updated. The response contains the full, updated watchlist; check `invalid_symbols` for any submitted symbols that were dropped."""
|
|
50
|
+
|
|
51
|
+
@model_serializer(mode="wrap")
|
|
52
|
+
def serialize_model(self, handler):
|
|
53
|
+
optional_fields = set(["Watchlist"])
|
|
54
|
+
serialized = handler(self)
|
|
55
|
+
m = {}
|
|
56
|
+
|
|
57
|
+
for n, f in type(self).model_fields.items():
|
|
58
|
+
k = f.alias or n
|
|
59
|
+
val = serialized.get(k, serialized.get(n))
|
|
60
|
+
|
|
61
|
+
if val != UNSET_SENTINEL:
|
|
62
|
+
if val is not None or k not in optional_fields:
|
|
63
|
+
m[k] = val
|
|
64
|
+
|
|
65
|
+
return m
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 5667a6ca5147
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
from pydantic import model_serializer
|
|
7
|
+
from typing import List, Optional, Union
|
|
8
|
+
from typing_extensions import NotRequired, TypeAliasType, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UpdateWatchlistRequest3TypedDict(TypedDict):
|
|
12
|
+
remove_symbols: List[str]
|
|
13
|
+
r"""Symbols to remove from the watchlist."""
|
|
14
|
+
add_symbols: NotRequired[List[str]]
|
|
15
|
+
r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
|
|
16
|
+
name: NotRequired[str]
|
|
17
|
+
r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class UpdateWatchlistRequest3(BaseModel):
|
|
21
|
+
remove_symbols: List[str]
|
|
22
|
+
r"""Symbols to remove from the watchlist."""
|
|
23
|
+
|
|
24
|
+
add_symbols: Optional[List[str]] = None
|
|
25
|
+
r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
|
|
26
|
+
|
|
27
|
+
name: Optional[str] = None
|
|
28
|
+
r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
|
|
29
|
+
|
|
30
|
+
@model_serializer(mode="wrap")
|
|
31
|
+
def serialize_model(self, handler):
|
|
32
|
+
optional_fields = set(["add_symbols", "name"])
|
|
33
|
+
serialized = handler(self)
|
|
34
|
+
m = {}
|
|
35
|
+
|
|
36
|
+
for n, f in type(self).model_fields.items():
|
|
37
|
+
k = f.alias or n
|
|
38
|
+
val = serialized.get(k, serialized.get(n))
|
|
39
|
+
|
|
40
|
+
if val != UNSET_SENTINEL:
|
|
41
|
+
if val is not None or k not in optional_fields:
|
|
42
|
+
m[k] = val
|
|
43
|
+
|
|
44
|
+
return m
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class UpdateWatchlistRequest2TypedDict(TypedDict):
|
|
48
|
+
add_symbols: List[str]
|
|
49
|
+
r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
|
|
50
|
+
name: NotRequired[str]
|
|
51
|
+
r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
|
|
52
|
+
remove_symbols: NotRequired[List[str]]
|
|
53
|
+
r"""Symbols to remove from the watchlist."""
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class UpdateWatchlistRequest2(BaseModel):
|
|
57
|
+
add_symbols: List[str]
|
|
58
|
+
r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
|
|
59
|
+
|
|
60
|
+
name: Optional[str] = None
|
|
61
|
+
r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
|
|
62
|
+
|
|
63
|
+
remove_symbols: Optional[List[str]] = None
|
|
64
|
+
r"""Symbols to remove from the watchlist."""
|
|
65
|
+
|
|
66
|
+
@model_serializer(mode="wrap")
|
|
67
|
+
def serialize_model(self, handler):
|
|
68
|
+
optional_fields = set(["name", "remove_symbols"])
|
|
69
|
+
serialized = handler(self)
|
|
70
|
+
m = {}
|
|
71
|
+
|
|
72
|
+
for n, f in type(self).model_fields.items():
|
|
73
|
+
k = f.alias or n
|
|
74
|
+
val = serialized.get(k, serialized.get(n))
|
|
75
|
+
|
|
76
|
+
if val != UNSET_SENTINEL:
|
|
77
|
+
if val is not None or k not in optional_fields:
|
|
78
|
+
m[k] = val
|
|
79
|
+
|
|
80
|
+
return m
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class UpdateWatchlistRequest1TypedDict(TypedDict):
|
|
84
|
+
name: str
|
|
85
|
+
r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
|
|
86
|
+
add_symbols: NotRequired[List[str]]
|
|
87
|
+
r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
|
|
88
|
+
remove_symbols: NotRequired[List[str]]
|
|
89
|
+
r"""Symbols to remove from the watchlist."""
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class UpdateWatchlistRequest1(BaseModel):
|
|
93
|
+
name: str
|
|
94
|
+
r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
|
|
95
|
+
|
|
96
|
+
add_symbols: Optional[List[str]] = None
|
|
97
|
+
r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
|
|
98
|
+
|
|
99
|
+
remove_symbols: Optional[List[str]] = None
|
|
100
|
+
r"""Symbols to remove from the watchlist."""
|
|
101
|
+
|
|
102
|
+
@model_serializer(mode="wrap")
|
|
103
|
+
def serialize_model(self, handler):
|
|
104
|
+
optional_fields = set(["add_symbols", "remove_symbols"])
|
|
105
|
+
serialized = handler(self)
|
|
106
|
+
m = {}
|
|
107
|
+
|
|
108
|
+
for n, f in type(self).model_fields.items():
|
|
109
|
+
k = f.alias or n
|
|
110
|
+
val = serialized.get(k, serialized.get(n))
|
|
111
|
+
|
|
112
|
+
if val != UNSET_SENTINEL:
|
|
113
|
+
if val is not None or k not in optional_fields:
|
|
114
|
+
m[k] = val
|
|
115
|
+
|
|
116
|
+
return m
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
UpdateWatchlistRequestUnionTypedDict = TypeAliasType(
|
|
120
|
+
"UpdateWatchlistRequestUnionTypedDict",
|
|
121
|
+
Union[
|
|
122
|
+
UpdateWatchlistRequest1TypedDict,
|
|
123
|
+
UpdateWatchlistRequest2TypedDict,
|
|
124
|
+
UpdateWatchlistRequest3TypedDict,
|
|
125
|
+
],
|
|
126
|
+
)
|
|
127
|
+
r"""Request body for partially updating a watchlist. Include at least one of `name`, `add_symbols`, or `remove_symbols`."""
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
UpdateWatchlistRequestUnion = TypeAliasType(
|
|
131
|
+
"UpdateWatchlistRequestUnion",
|
|
132
|
+
Union[UpdateWatchlistRequest1, UpdateWatchlistRequest2, UpdateWatchlistRequest3],
|
|
133
|
+
)
|
|
134
|
+
r"""Request body for partially updating a watchlist. Include at least one of `name`, `add_symbols`, or `remove_symbols`."""
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 172f3b892ed5
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
import pydantic
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class UpgradesDowngradesResponseDataTypedDict(TypedDict):
|
|
13
|
+
action: NotRequired[str]
|
|
14
|
+
r"""Type of rating action, such as upgrade, downgrade, initiate or maintain"""
|
|
15
|
+
company: NotRequired[str]
|
|
16
|
+
r"""Name of the firm that issued the rating change"""
|
|
17
|
+
from_grade: NotRequired[str]
|
|
18
|
+
r"""Previous rating"""
|
|
19
|
+
grade_time: NotRequired[int]
|
|
20
|
+
r"""Time of the rating change as a Unix timestamp"""
|
|
21
|
+
symbol: NotRequired[str]
|
|
22
|
+
r"""Stock ticker symbol"""
|
|
23
|
+
to_grade: NotRequired[str]
|
|
24
|
+
r"""New rating"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class UpgradesDowngradesResponseData(BaseModel):
|
|
28
|
+
action: Optional[str] = None
|
|
29
|
+
r"""Type of rating action, such as upgrade, downgrade, initiate or maintain"""
|
|
30
|
+
|
|
31
|
+
company: Optional[str] = None
|
|
32
|
+
r"""Name of the firm that issued the rating change"""
|
|
33
|
+
|
|
34
|
+
from_grade: Annotated[Optional[str], pydantic.Field(alias="fromGrade")] = None
|
|
35
|
+
r"""Previous rating"""
|
|
36
|
+
|
|
37
|
+
grade_time: Annotated[Optional[int], pydantic.Field(alias="gradeTime")] = None
|
|
38
|
+
r"""Time of the rating change as a Unix timestamp"""
|
|
39
|
+
|
|
40
|
+
symbol: Optional[str] = None
|
|
41
|
+
r"""Stock ticker symbol"""
|
|
42
|
+
|
|
43
|
+
to_grade: Annotated[Optional[str], pydantic.Field(alias="toGrade")] = None
|
|
44
|
+
r"""New rating"""
|
|
45
|
+
|
|
46
|
+
@model_serializer(mode="wrap")
|
|
47
|
+
def serialize_model(self, handler):
|
|
48
|
+
optional_fields = set(
|
|
49
|
+
["action", "company", "fromGrade", "gradeTime", "symbol", "toGrade"]
|
|
50
|
+
)
|
|
51
|
+
serialized = handler(self)
|
|
52
|
+
m = {}
|
|
53
|
+
|
|
54
|
+
for n, f in type(self).model_fields.items():
|
|
55
|
+
k = f.alias or n
|
|
56
|
+
val = serialized.get(k, serialized.get(n))
|
|
57
|
+
|
|
58
|
+
if val != UNSET_SENTINEL:
|
|
59
|
+
if val is not None or k not in optional_fields:
|
|
60
|
+
m[k] = val
|
|
61
|
+
|
|
62
|
+
return m
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class UpgradesDowngradesResponseTypedDict(TypedDict):
|
|
66
|
+
r"""Analyst rating upgrades and downgrades for a stock, sourced from Finnhub."""
|
|
67
|
+
|
|
68
|
+
data: NotRequired[List[UpgradesDowngradesResponseDataTypedDict]]
|
|
69
|
+
r"""List of analyst rating change events"""
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class UpgradesDowngradesResponse(BaseModel):
|
|
73
|
+
r"""Analyst rating upgrades and downgrades for a stock, sourced from Finnhub."""
|
|
74
|
+
|
|
75
|
+
data: Optional[List[UpgradesDowngradesResponseData]] = None
|
|
76
|
+
r"""List of analyst rating change events"""
|
|
77
|
+
|
|
78
|
+
@model_serializer(mode="wrap")
|
|
79
|
+
def serialize_model(self, handler):
|
|
80
|
+
optional_fields = set(["data"])
|
|
81
|
+
serialized = handler(self)
|
|
82
|
+
m = {}
|
|
83
|
+
|
|
84
|
+
for n, f in type(self).model_fields.items():
|
|
85
|
+
k = f.alias or n
|
|
86
|
+
val = serialized.get(k, serialized.get(n))
|
|
87
|
+
|
|
88
|
+
if val != UNSET_SENTINEL:
|
|
89
|
+
if val is not None or k not in optional_fields:
|
|
90
|
+
m[k] = val
|
|
91
|
+
|
|
92
|
+
return m
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
UpgradesDowngradesResponseData.model_rebuild()
|
|
97
|
+
except NameError:
|
|
98
|
+
pass
|