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,192 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 7d00058f41aa
|
|
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 Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CountTypedDict(TypedDict):
|
|
13
|
+
r"""Number of indicators giving each signal."""
|
|
14
|
+
|
|
15
|
+
buy: NotRequired[int]
|
|
16
|
+
r"""Number of indicators giving a buy signal."""
|
|
17
|
+
neutral: NotRequired[int]
|
|
18
|
+
r"""Number of indicators giving a neutral signal."""
|
|
19
|
+
sell: NotRequired[int]
|
|
20
|
+
r"""Number of indicators giving a sell signal."""
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Count(BaseModel):
|
|
24
|
+
r"""Number of indicators giving each signal."""
|
|
25
|
+
|
|
26
|
+
buy: Optional[int] = None
|
|
27
|
+
r"""Number of indicators giving a buy signal."""
|
|
28
|
+
|
|
29
|
+
neutral: Optional[int] = None
|
|
30
|
+
r"""Number of indicators giving a neutral signal."""
|
|
31
|
+
|
|
32
|
+
sell: Optional[int] = None
|
|
33
|
+
r"""Number of indicators giving a sell signal."""
|
|
34
|
+
|
|
35
|
+
@model_serializer(mode="wrap")
|
|
36
|
+
def serialize_model(self, handler):
|
|
37
|
+
optional_fields = set(["buy", "neutral", "sell"])
|
|
38
|
+
serialized = handler(self)
|
|
39
|
+
m = {}
|
|
40
|
+
|
|
41
|
+
for n, f in type(self).model_fields.items():
|
|
42
|
+
k = f.alias or n
|
|
43
|
+
val = serialized.get(k, serialized.get(n))
|
|
44
|
+
|
|
45
|
+
if val != UNSET_SENTINEL:
|
|
46
|
+
if val is not None or k not in optional_fields:
|
|
47
|
+
m[k] = val
|
|
48
|
+
|
|
49
|
+
return m
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class TechnicalAnalysisTypedDict(TypedDict):
|
|
53
|
+
r"""Aggregate technical analysis summary."""
|
|
54
|
+
|
|
55
|
+
count: NotRequired[CountTypedDict]
|
|
56
|
+
r"""Number of indicators giving each signal."""
|
|
57
|
+
signal: NotRequired[str]
|
|
58
|
+
r"""Overall aggregate signal."""
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class TechnicalAnalysis(BaseModel):
|
|
62
|
+
r"""Aggregate technical analysis summary."""
|
|
63
|
+
|
|
64
|
+
count: Optional[Count] = None
|
|
65
|
+
r"""Number of indicators giving each signal."""
|
|
66
|
+
|
|
67
|
+
signal: Optional[str] = None
|
|
68
|
+
r"""Overall aggregate signal."""
|
|
69
|
+
|
|
70
|
+
@model_serializer(mode="wrap")
|
|
71
|
+
def serialize_model(self, handler):
|
|
72
|
+
optional_fields = set(["count", "signal"])
|
|
73
|
+
serialized = handler(self)
|
|
74
|
+
m = {}
|
|
75
|
+
|
|
76
|
+
for n, f in type(self).model_fields.items():
|
|
77
|
+
k = f.alias or n
|
|
78
|
+
val = serialized.get(k, serialized.get(n))
|
|
79
|
+
|
|
80
|
+
if val != UNSET_SENTINEL:
|
|
81
|
+
if val is not None or k not in optional_fields:
|
|
82
|
+
m[k] = val
|
|
83
|
+
|
|
84
|
+
return m
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class TrendTypedDict(TypedDict):
|
|
88
|
+
r"""Trend strength information."""
|
|
89
|
+
|
|
90
|
+
adx: NotRequired[float]
|
|
91
|
+
r"""Average Directional Index (ADX) value."""
|
|
92
|
+
trending: NotRequired[bool]
|
|
93
|
+
r"""Whether the symbol is trending."""
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class Trend(BaseModel):
|
|
97
|
+
r"""Trend strength information."""
|
|
98
|
+
|
|
99
|
+
adx: Optional[float] = None
|
|
100
|
+
r"""Average Directional Index (ADX) value."""
|
|
101
|
+
|
|
102
|
+
trending: Optional[bool] = None
|
|
103
|
+
r"""Whether the symbol is trending."""
|
|
104
|
+
|
|
105
|
+
@model_serializer(mode="wrap")
|
|
106
|
+
def serialize_model(self, handler):
|
|
107
|
+
optional_fields = set(["adx", "trending"])
|
|
108
|
+
serialized = handler(self)
|
|
109
|
+
m = {}
|
|
110
|
+
|
|
111
|
+
for n, f in type(self).model_fields.items():
|
|
112
|
+
k = f.alias or n
|
|
113
|
+
val = serialized.get(k, serialized.get(n))
|
|
114
|
+
|
|
115
|
+
if val != UNSET_SENTINEL:
|
|
116
|
+
if val is not None or k not in optional_fields:
|
|
117
|
+
m[k] = val
|
|
118
|
+
|
|
119
|
+
return m
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class AggregateTechnicalIndicatorsResponseDataTypedDict(TypedDict):
|
|
123
|
+
r"""Aggregate indicators payload."""
|
|
124
|
+
|
|
125
|
+
technical_analysis: NotRequired[TechnicalAnalysisTypedDict]
|
|
126
|
+
r"""Aggregate technical analysis summary."""
|
|
127
|
+
trend: NotRequired[TrendTypedDict]
|
|
128
|
+
r"""Trend strength information."""
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class AggregateTechnicalIndicatorsResponseData(BaseModel):
|
|
132
|
+
r"""Aggregate indicators payload."""
|
|
133
|
+
|
|
134
|
+
technical_analysis: Annotated[
|
|
135
|
+
Optional[TechnicalAnalysis], pydantic.Field(alias="technicalAnalysis")
|
|
136
|
+
] = None
|
|
137
|
+
r"""Aggregate technical analysis summary."""
|
|
138
|
+
|
|
139
|
+
trend: Optional[Trend] = None
|
|
140
|
+
r"""Trend strength information."""
|
|
141
|
+
|
|
142
|
+
@model_serializer(mode="wrap")
|
|
143
|
+
def serialize_model(self, handler):
|
|
144
|
+
optional_fields = set(["technicalAnalysis", "trend"])
|
|
145
|
+
serialized = handler(self)
|
|
146
|
+
m = {}
|
|
147
|
+
|
|
148
|
+
for n, f in type(self).model_fields.items():
|
|
149
|
+
k = f.alias or n
|
|
150
|
+
val = serialized.get(k, serialized.get(n))
|
|
151
|
+
|
|
152
|
+
if val != UNSET_SENTINEL:
|
|
153
|
+
if val is not None or k not in optional_fields:
|
|
154
|
+
m[k] = val
|
|
155
|
+
|
|
156
|
+
return m
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class AggregateTechnicalIndicatorsResponseTypedDict(TypedDict):
|
|
160
|
+
r"""Aggregate technical indicator signal and trend strength for a symbol and resolution from Finnhub."""
|
|
161
|
+
|
|
162
|
+
data: NotRequired[AggregateTechnicalIndicatorsResponseDataTypedDict]
|
|
163
|
+
r"""Aggregate indicators payload."""
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
class AggregateTechnicalIndicatorsResponse(BaseModel):
|
|
167
|
+
r"""Aggregate technical indicator signal and trend strength for a symbol and resolution from Finnhub."""
|
|
168
|
+
|
|
169
|
+
data: Optional[AggregateTechnicalIndicatorsResponseData] = None
|
|
170
|
+
r"""Aggregate indicators payload."""
|
|
171
|
+
|
|
172
|
+
@model_serializer(mode="wrap")
|
|
173
|
+
def serialize_model(self, handler):
|
|
174
|
+
optional_fields = set(["data"])
|
|
175
|
+
serialized = handler(self)
|
|
176
|
+
m = {}
|
|
177
|
+
|
|
178
|
+
for n, f in type(self).model_fields.items():
|
|
179
|
+
k = f.alias or n
|
|
180
|
+
val = serialized.get(k, serialized.get(n))
|
|
181
|
+
|
|
182
|
+
if val != UNSET_SENTINEL:
|
|
183
|
+
if val is not None or k not in optional_fields:
|
|
184
|
+
m[k] = val
|
|
185
|
+
|
|
186
|
+
return m
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
try:
|
|
190
|
+
AggregateTechnicalIndicatorsResponseData.model_rebuild()
|
|
191
|
+
except NameError:
|
|
192
|
+
pass
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: f69109ec7db3
|
|
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 Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AnalystInsightItemSecurityTypedDict(TypedDict):
|
|
13
|
+
r"""Security metadata for the company or instrument this analyst insight covers."""
|
|
14
|
+
|
|
15
|
+
cik: NotRequired[str]
|
|
16
|
+
r"""SEC Central Index Key of the covered company."""
|
|
17
|
+
exchange: NotRequired[str]
|
|
18
|
+
r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
|
|
19
|
+
isin: NotRequired[str]
|
|
20
|
+
r"""ISIN of the covered security."""
|
|
21
|
+
name: NotRequired[str]
|
|
22
|
+
r"""Name of the covered company or instrument."""
|
|
23
|
+
symbol: NotRequired[str]
|
|
24
|
+
r"""Ticker symbol of the covered security."""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class AnalystInsightItemSecurity(BaseModel):
|
|
28
|
+
r"""Security metadata for the company or instrument this analyst insight covers."""
|
|
29
|
+
|
|
30
|
+
cik: Optional[str] = None
|
|
31
|
+
r"""SEC Central Index Key of the covered company."""
|
|
32
|
+
|
|
33
|
+
exchange: Optional[str] = None
|
|
34
|
+
r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
|
|
35
|
+
|
|
36
|
+
isin: Optional[str] = None
|
|
37
|
+
r"""ISIN of the covered security."""
|
|
38
|
+
|
|
39
|
+
name: Optional[str] = None
|
|
40
|
+
r"""Name of the covered company or instrument."""
|
|
41
|
+
|
|
42
|
+
symbol: Optional[str] = None
|
|
43
|
+
r"""Ticker symbol of the covered security."""
|
|
44
|
+
|
|
45
|
+
@model_serializer(mode="wrap")
|
|
46
|
+
def serialize_model(self, handler):
|
|
47
|
+
optional_fields = set(["cik", "exchange", "isin", "name", "symbol"])
|
|
48
|
+
serialized = handler(self)
|
|
49
|
+
m = {}
|
|
50
|
+
|
|
51
|
+
for n, f in type(self).model_fields.items():
|
|
52
|
+
k = f.alias or n
|
|
53
|
+
val = serialized.get(k, serialized.get(n))
|
|
54
|
+
|
|
55
|
+
if val != UNSET_SENTINEL:
|
|
56
|
+
if val is not None or k not in optional_fields:
|
|
57
|
+
m[k] = val
|
|
58
|
+
|
|
59
|
+
return m
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class AnalystInsightItemTypedDict(TypedDict):
|
|
63
|
+
r"""Single analyst insight (GET /v1/analytics/insights)."""
|
|
64
|
+
|
|
65
|
+
action: NotRequired[str]
|
|
66
|
+
r"""Analyst action such as upgrade, downgrade, initiation, or reiteration. Use it to explain what changed."""
|
|
67
|
+
analyst_insights: NotRequired[str]
|
|
68
|
+
r"""Plain-English analyst note or summary. Show this as the explanation behind the rating action."""
|
|
69
|
+
date_: NotRequired[str]
|
|
70
|
+
r"""Date the analyst insight was published. Use it to sort or filter recent analyst changes."""
|
|
71
|
+
firm: NotRequired[str]
|
|
72
|
+
r"""Research firm that published the insight. Show this so users know the source."""
|
|
73
|
+
firm_id: NotRequired[str]
|
|
74
|
+
r"""Provider identifier for the research firm. Use it for filtering or grouping by firm."""
|
|
75
|
+
id: NotRequired[str]
|
|
76
|
+
r"""Unique insight identifier. Use it for linking, deduping, or storing this analyst insight."""
|
|
77
|
+
pt: NotRequired[str]
|
|
78
|
+
r"""Analyst price target as a decimal string. Use it to show expected upside or downside versus the current price."""
|
|
79
|
+
rating: NotRequired[str]
|
|
80
|
+
r"""Analyst rating label such as Buy, Hold, or Sell. Use it as the business recommendation text."""
|
|
81
|
+
rating_id: NotRequired[str]
|
|
82
|
+
r"""Provider identifier for the rating record. Use it for deduping or linking insight data to rating data."""
|
|
83
|
+
security: NotRequired[AnalystInsightItemSecurityTypedDict]
|
|
84
|
+
r"""Security metadata for the company or instrument this analyst insight covers."""
|
|
85
|
+
updated: NotRequired[int]
|
|
86
|
+
r"""Last updated timestamp from the data provider. Use it to know whether a stored insight has changed."""
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class AnalystInsightItem(BaseModel):
|
|
90
|
+
r"""Single analyst insight (GET /v1/analytics/insights)."""
|
|
91
|
+
|
|
92
|
+
action: Optional[str] = None
|
|
93
|
+
r"""Analyst action such as upgrade, downgrade, initiation, or reiteration. Use it to explain what changed."""
|
|
94
|
+
|
|
95
|
+
analyst_insights: Annotated[
|
|
96
|
+
Optional[str], pydantic.Field(alias="analystInsights")
|
|
97
|
+
] = None
|
|
98
|
+
r"""Plain-English analyst note or summary. Show this as the explanation behind the rating action."""
|
|
99
|
+
|
|
100
|
+
date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
|
|
101
|
+
r"""Date the analyst insight was published. Use it to sort or filter recent analyst changes."""
|
|
102
|
+
|
|
103
|
+
firm: Optional[str] = None
|
|
104
|
+
r"""Research firm that published the insight. Show this so users know the source."""
|
|
105
|
+
|
|
106
|
+
firm_id: Annotated[Optional[str], pydantic.Field(alias="firmId")] = None
|
|
107
|
+
r"""Provider identifier for the research firm. Use it for filtering or grouping by firm."""
|
|
108
|
+
|
|
109
|
+
id: Optional[str] = None
|
|
110
|
+
r"""Unique insight identifier. Use it for linking, deduping, or storing this analyst insight."""
|
|
111
|
+
|
|
112
|
+
pt: Optional[str] = None
|
|
113
|
+
r"""Analyst price target as a decimal string. Use it to show expected upside or downside versus the current price."""
|
|
114
|
+
|
|
115
|
+
rating: Optional[str] = None
|
|
116
|
+
r"""Analyst rating label such as Buy, Hold, or Sell. Use it as the business recommendation text."""
|
|
117
|
+
|
|
118
|
+
rating_id: Annotated[Optional[str], pydantic.Field(alias="ratingId")] = None
|
|
119
|
+
r"""Provider identifier for the rating record. Use it for deduping or linking insight data to rating data."""
|
|
120
|
+
|
|
121
|
+
security: Optional[AnalystInsightItemSecurity] = None
|
|
122
|
+
r"""Security metadata for the company or instrument this analyst insight covers."""
|
|
123
|
+
|
|
124
|
+
updated: Optional[int] = None
|
|
125
|
+
r"""Last updated timestamp from the data provider. Use it to know whether a stored insight has changed."""
|
|
126
|
+
|
|
127
|
+
@model_serializer(mode="wrap")
|
|
128
|
+
def serialize_model(self, handler):
|
|
129
|
+
optional_fields = set(
|
|
130
|
+
[
|
|
131
|
+
"action",
|
|
132
|
+
"analystInsights",
|
|
133
|
+
"date",
|
|
134
|
+
"firm",
|
|
135
|
+
"firmId",
|
|
136
|
+
"id",
|
|
137
|
+
"pt",
|
|
138
|
+
"rating",
|
|
139
|
+
"ratingId",
|
|
140
|
+
"security",
|
|
141
|
+
"updated",
|
|
142
|
+
]
|
|
143
|
+
)
|
|
144
|
+
serialized = handler(self)
|
|
145
|
+
m = {}
|
|
146
|
+
|
|
147
|
+
for n, f in type(self).model_fields.items():
|
|
148
|
+
k = f.alias or n
|
|
149
|
+
val = serialized.get(k, serialized.get(n))
|
|
150
|
+
|
|
151
|
+
if val != UNSET_SENTINEL:
|
|
152
|
+
if val is not None or k not in optional_fields:
|
|
153
|
+
m[k] = val
|
|
154
|
+
|
|
155
|
+
return m
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
try:
|
|
159
|
+
AnalystInsightItem.model_rebuild()
|
|
160
|
+
except NameError:
|
|
161
|
+
pass
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: b808c7ded529
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .analystinsightitem import AnalystInsightItem, AnalystInsightItemTypedDict
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
from typing_extensions import NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AnalystInsightsResponseTypedDict(TypedDict):
|
|
13
|
+
r"""Response containing analyst insights."""
|
|
14
|
+
|
|
15
|
+
insights: NotRequired[List[AnalystInsightItemTypedDict]]
|
|
16
|
+
r"""Array of analyst insights"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AnalystInsightsResponse(BaseModel):
|
|
20
|
+
r"""Response containing analyst insights."""
|
|
21
|
+
|
|
22
|
+
insights: Optional[List[AnalystInsightItem]] = None
|
|
23
|
+
r"""Array of analyst insights"""
|
|
24
|
+
|
|
25
|
+
@model_serializer(mode="wrap")
|
|
26
|
+
def serialize_model(self, handler):
|
|
27
|
+
optional_fields = set(["insights"])
|
|
28
|
+
serialized = handler(self)
|
|
29
|
+
m = {}
|
|
30
|
+
|
|
31
|
+
for n, f in type(self).model_fields.items():
|
|
32
|
+
k = f.alias or n
|
|
33
|
+
val = serialized.get(k, serialized.get(n))
|
|
34
|
+
|
|
35
|
+
if val != UNSET_SENTINEL:
|
|
36
|
+
if val is not None or k not in optional_fields:
|
|
37
|
+
m[k] = val
|
|
38
|
+
|
|
39
|
+
return m
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 714f616ab5cf
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from finance_dev import models, utils
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
from pydantic import field_serializer, model_serializer
|
|
9
|
+
from typing import Any, Dict, Optional
|
|
10
|
+
from typing_extensions import NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AppErrorType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
14
|
+
r"""Categorical error type. Use this for branching error-handling logic; the values are stable across endpoints:
|
|
15
|
+
- `VALIDATION` — request body or query parameters failed validation.
|
|
16
|
+
- `AUTHENTICATION` — missing, invalid, or expired token.
|
|
17
|
+
- `AUTHORIZATION` — token is valid but lacks the required scope/permission.
|
|
18
|
+
- `NOT_FOUND` — the requested resource does not exist.
|
|
19
|
+
- `CONFLICT` — request conflicts with current state (e.g. duplicate).
|
|
20
|
+
- `INTERNAL` — server-side error; retry or contact support.
|
|
21
|
+
- `TIMEOUT` — operation took too long.
|
|
22
|
+
- `UNKNOWN` — uncategorized error; check `message`.
|
|
23
|
+
(Additional categorical values may appear in service-specific responses.)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
UNKNOWN = "UNKNOWN"
|
|
27
|
+
VALIDATION = "VALIDATION"
|
|
28
|
+
AUTHENTICATION = "AUTHENTICATION"
|
|
29
|
+
AUTHORIZATION = "AUTHORIZATION"
|
|
30
|
+
NOT_FOUND = "NOT_FOUND"
|
|
31
|
+
CONFLICT = "CONFLICT"
|
|
32
|
+
INTERNAL = "INTERNAL"
|
|
33
|
+
TIMEOUT = "TIMEOUT"
|
|
34
|
+
RATE_LIMIT = "RATE_LIMIT"
|
|
35
|
+
BAD_REQUEST = "BAD_REQUEST"
|
|
36
|
+
DATABASE = "DATABASE"
|
|
37
|
+
EXTERNAL_SERVICE = "EXTERNAL_SERVICE"
|
|
38
|
+
PRECONDITION_FAILED = "PRECONDITION_FAILED"
|
|
39
|
+
SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE"
|
|
40
|
+
GRPC = "GRPC"
|
|
41
|
+
QUEUE = "QUEUE"
|
|
42
|
+
JSON_PARSING = "JSON_PARSING"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class AppErrorTypedDict(TypedDict):
|
|
46
|
+
r"""Structured application error returned inside an `ErrorEnvelope`."""
|
|
47
|
+
|
|
48
|
+
code: str
|
|
49
|
+
r"""Machine-readable code, e.g. `SYMBOL_REQUIRED`, `EVENT_NOT_FOUND`."""
|
|
50
|
+
message: str
|
|
51
|
+
r"""Error detail as a string. Exact message content is not fixed and should not be hard-coded."""
|
|
52
|
+
type: AppErrorType
|
|
53
|
+
r"""Categorical error type. Use this for branching error-handling logic; the values are stable across endpoints:
|
|
54
|
+
- `VALIDATION` — request body or query parameters failed validation.
|
|
55
|
+
- `AUTHENTICATION` — missing, invalid, or expired token.
|
|
56
|
+
- `AUTHORIZATION` — token is valid but lacks the required scope/permission.
|
|
57
|
+
- `NOT_FOUND` — the requested resource does not exist.
|
|
58
|
+
- `CONFLICT` — request conflicts with current state (e.g. duplicate).
|
|
59
|
+
- `INTERNAL` — server-side error; retry or contact support.
|
|
60
|
+
- `TIMEOUT` — operation took too long.
|
|
61
|
+
- `UNKNOWN` — uncategorized error; check `message`.
|
|
62
|
+
(Additional categorical values may appear in service-specific responses.)
|
|
63
|
+
"""
|
|
64
|
+
details: NotRequired[Dict[str, Any]]
|
|
65
|
+
operation: NotRequired[str]
|
|
66
|
+
request_id: NotRequired[str]
|
|
67
|
+
service: NotRequired[str]
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class AppError(BaseModel):
|
|
71
|
+
r"""Structured application error returned inside an `ErrorEnvelope`."""
|
|
72
|
+
|
|
73
|
+
code: str
|
|
74
|
+
r"""Machine-readable code, e.g. `SYMBOL_REQUIRED`, `EVENT_NOT_FOUND`."""
|
|
75
|
+
|
|
76
|
+
message: str
|
|
77
|
+
r"""Error detail as a string. Exact message content is not fixed and should not be hard-coded."""
|
|
78
|
+
|
|
79
|
+
type: AppErrorType
|
|
80
|
+
r"""Categorical error type. Use this for branching error-handling logic; the values are stable across endpoints:
|
|
81
|
+
- `VALIDATION` — request body or query parameters failed validation.
|
|
82
|
+
- `AUTHENTICATION` — missing, invalid, or expired token.
|
|
83
|
+
- `AUTHORIZATION` — token is valid but lacks the required scope/permission.
|
|
84
|
+
- `NOT_FOUND` — the requested resource does not exist.
|
|
85
|
+
- `CONFLICT` — request conflicts with current state (e.g. duplicate).
|
|
86
|
+
- `INTERNAL` — server-side error; retry or contact support.
|
|
87
|
+
- `TIMEOUT` — operation took too long.
|
|
88
|
+
- `UNKNOWN` — uncategorized error; check `message`.
|
|
89
|
+
(Additional categorical values may appear in service-specific responses.)
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
details: Optional[Dict[str, Any]] = None
|
|
93
|
+
|
|
94
|
+
operation: Optional[str] = None
|
|
95
|
+
|
|
96
|
+
request_id: Optional[str] = None
|
|
97
|
+
|
|
98
|
+
service: Optional[str] = None
|
|
99
|
+
|
|
100
|
+
@field_serializer("type")
|
|
101
|
+
def serialize_type(self, value):
|
|
102
|
+
if isinstance(value, str):
|
|
103
|
+
try:
|
|
104
|
+
return models.AppErrorType(value)
|
|
105
|
+
except ValueError:
|
|
106
|
+
return value
|
|
107
|
+
return value
|
|
108
|
+
|
|
109
|
+
@model_serializer(mode="wrap")
|
|
110
|
+
def serialize_model(self, handler):
|
|
111
|
+
optional_fields = set(["details", "operation", "request_id", "service"])
|
|
112
|
+
serialized = handler(self)
|
|
113
|
+
m = {}
|
|
114
|
+
|
|
115
|
+
for n, f in type(self).model_fields.items():
|
|
116
|
+
k = f.alias or n
|
|
117
|
+
val = serialized.get(k, serialized.get(n))
|
|
118
|
+
|
|
119
|
+
if val != UNSET_SENTINEL:
|
|
120
|
+
if val is not None or k not in optional_fields:
|
|
121
|
+
m[k] = val
|
|
122
|
+
|
|
123
|
+
return m
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 5969d9208386
|
|
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 Any, Dict, Optional
|
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AuthenticationErrorDetailTypedDict(TypedDict):
|
|
12
|
+
r"""Structured payload for the nested `error` object. Services using the shared Go error writer emit uppercase `type` values aligned with error categories (for example `VALIDATION`, `BAD_REQUEST`, `AUTHENTICATION`, `AUTHORIZATION`, `NOT_FOUND`, `RATE_LIMIT`, `INTERNAL`)."""
|
|
13
|
+
|
|
14
|
+
code: NotRequired[str]
|
|
15
|
+
r"""Machine-readable code"""
|
|
16
|
+
details: NotRequired[Dict[str, Any]]
|
|
17
|
+
r"""Optional extra context"""
|
|
18
|
+
message: NotRequired[str]
|
|
19
|
+
r"""Error detail as a string. Exact message content is not fixed and should not be hard-coded."""
|
|
20
|
+
request_id: NotRequired[str]
|
|
21
|
+
r"""Request correlation id when provided"""
|
|
22
|
+
type: NotRequired[str]
|
|
23
|
+
r"""Error category emitted by the shared error writer, such as VALIDATION, BAD_REQUEST, AUTHENTICATION, AUTHORIZATION, NOT_FOUND, RATE_LIMIT, or INTERNAL."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class AuthenticationErrorDetail(BaseModel):
|
|
27
|
+
r"""Structured payload for the nested `error` object. Services using the shared Go error writer emit uppercase `type` values aligned with error categories (for example `VALIDATION`, `BAD_REQUEST`, `AUTHENTICATION`, `AUTHORIZATION`, `NOT_FOUND`, `RATE_LIMIT`, `INTERNAL`)."""
|
|
28
|
+
|
|
29
|
+
code: Optional[str] = None
|
|
30
|
+
r"""Machine-readable code"""
|
|
31
|
+
|
|
32
|
+
details: Optional[Dict[str, Any]] = None
|
|
33
|
+
r"""Optional extra context"""
|
|
34
|
+
|
|
35
|
+
message: Optional[str] = None
|
|
36
|
+
r"""Error detail as a string. Exact message content is not fixed and should not be hard-coded."""
|
|
37
|
+
|
|
38
|
+
request_id: Optional[str] = None
|
|
39
|
+
r"""Request correlation id when provided"""
|
|
40
|
+
|
|
41
|
+
type: Optional[str] = None
|
|
42
|
+
r"""Error category emitted by the shared error writer, such as VALIDATION, BAD_REQUEST, AUTHENTICATION, AUTHORIZATION, NOT_FOUND, RATE_LIMIT, or INTERNAL."""
|
|
43
|
+
|
|
44
|
+
@model_serializer(mode="wrap")
|
|
45
|
+
def serialize_model(self, handler):
|
|
46
|
+
optional_fields = set(["code", "details", "message", "request_id", "type"])
|
|
47
|
+
serialized = handler(self)
|
|
48
|
+
m = {}
|
|
49
|
+
|
|
50
|
+
for n, f in type(self).model_fields.items():
|
|
51
|
+
k = f.alias or n
|
|
52
|
+
val = serialized.get(k, serialized.get(n))
|
|
53
|
+
|
|
54
|
+
if val != UNSET_SENTINEL:
|
|
55
|
+
if val is not None or k not in optional_fields:
|
|
56
|
+
m[k] = val
|
|
57
|
+
|
|
58
|
+
return m
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: d06e04024df2
|
|
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 BankBranchesResponseDataTypedDict(TypedDict):
|
|
13
|
+
address: NotRequired[str]
|
|
14
|
+
r"""Branch address."""
|
|
15
|
+
branch_id: NotRequired[str]
|
|
16
|
+
r"""Branch identifier."""
|
|
17
|
+
date_: NotRequired[str]
|
|
18
|
+
r"""Date the branch was opened, as returned by the provider."""
|
|
19
|
+
state: NotRequired[str]
|
|
20
|
+
r"""Branch state."""
|
|
21
|
+
zip_code: NotRequired[str]
|
|
22
|
+
r"""Branch zip code."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class BankBranchesResponseData(BaseModel):
|
|
26
|
+
address: Optional[str] = None
|
|
27
|
+
r"""Branch address."""
|
|
28
|
+
|
|
29
|
+
branch_id: Annotated[Optional[str], pydantic.Field(alias="branchId")] = None
|
|
30
|
+
r"""Branch identifier."""
|
|
31
|
+
|
|
32
|
+
date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
|
|
33
|
+
r"""Date the branch was opened, as returned by the provider."""
|
|
34
|
+
|
|
35
|
+
state: Optional[str] = None
|
|
36
|
+
r"""Branch state."""
|
|
37
|
+
|
|
38
|
+
zip_code: Annotated[Optional[str], pydantic.Field(alias="zipCode")] = None
|
|
39
|
+
r"""Branch zip code."""
|
|
40
|
+
|
|
41
|
+
@model_serializer(mode="wrap")
|
|
42
|
+
def serialize_model(self, handler):
|
|
43
|
+
optional_fields = set(["address", "branchId", "date", "state", "zipCode"])
|
|
44
|
+
serialized = handler(self)
|
|
45
|
+
m = {}
|
|
46
|
+
|
|
47
|
+
for n, f in type(self).model_fields.items():
|
|
48
|
+
k = f.alias or n
|
|
49
|
+
val = serialized.get(k, serialized.get(n))
|
|
50
|
+
|
|
51
|
+
if val != UNSET_SENTINEL:
|
|
52
|
+
if val is not None or k not in optional_fields:
|
|
53
|
+
m[k] = val
|
|
54
|
+
|
|
55
|
+
return m
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class BankBranchesResponseTypedDict(TypedDict):
|
|
59
|
+
r"""List of US bank branches for a company, as provided by Finnhub."""
|
|
60
|
+
|
|
61
|
+
data: NotRequired[List[BankBranchesResponseDataTypedDict]]
|
|
62
|
+
r"""Bank branches for the symbol."""
|
|
63
|
+
symbol: NotRequired[str]
|
|
64
|
+
r"""Company ticker symbol."""
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class BankBranchesResponse(BaseModel):
|
|
68
|
+
r"""List of US bank branches for a company, as provided by Finnhub."""
|
|
69
|
+
|
|
70
|
+
data: Optional[List[BankBranchesResponseData]] = None
|
|
71
|
+
r"""Bank branches for the symbol."""
|
|
72
|
+
|
|
73
|
+
symbol: Optional[str] = None
|
|
74
|
+
r"""Company ticker symbol."""
|
|
75
|
+
|
|
76
|
+
@model_serializer(mode="wrap")
|
|
77
|
+
def serialize_model(self, handler):
|
|
78
|
+
optional_fields = set(["data", "symbol"])
|
|
79
|
+
serialized = handler(self)
|
|
80
|
+
m = {}
|
|
81
|
+
|
|
82
|
+
for n, f in type(self).model_fields.items():
|
|
83
|
+
k = f.alias or n
|
|
84
|
+
val = serialized.get(k, serialized.get(n))
|
|
85
|
+
|
|
86
|
+
if val != UNSET_SENTINEL:
|
|
87
|
+
if val is not None or k not in optional_fields:
|
|
88
|
+
m[k] = val
|
|
89
|
+
|
|
90
|
+
return m
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
BankBranchesResponseData.model_rebuild()
|
|
95
|
+
except NameError:
|
|
96
|
+
pass
|