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
finance_dev/calendar.py
ADDED
|
@@ -0,0 +1,1523 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 7846457e7396
|
|
3
|
+
|
|
4
|
+
from .basesdk import BaseSDK
|
|
5
|
+
from datetime import date
|
|
6
|
+
from finance_dev import errors, models, utils
|
|
7
|
+
from finance_dev._hooks import HookContext
|
|
8
|
+
from finance_dev.types import OptionalNullable, UNSET
|
|
9
|
+
from finance_dev.utils.unmarshal_json_response import unmarshal_json_response
|
|
10
|
+
from jsonpath import JSONPath
|
|
11
|
+
from typing import Any, Dict, List, Mapping, Optional, Union
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Calendar(BaseSDK):
|
|
15
|
+
def get_conference_calls(
|
|
16
|
+
self,
|
|
17
|
+
*,
|
|
18
|
+
date_from: Optional[date] = None,
|
|
19
|
+
date_to: Optional[date] = None,
|
|
20
|
+
tickers: Optional[str] = None,
|
|
21
|
+
page: Optional[int] = None,
|
|
22
|
+
page_size: Optional[int] = None,
|
|
23
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
24
|
+
server_url: Optional[str] = None,
|
|
25
|
+
timeout_ms: Optional[int] = None,
|
|
26
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
27
|
+
) -> Optional[models.GetConferenceCallsResponse]:
|
|
28
|
+
r"""Get Conference Calls
|
|
29
|
+
|
|
30
|
+
Retrieve upcoming and past earnings conference call schedules including dates, times, and dial-in information for management discussions.
|
|
31
|
+
|
|
32
|
+
If set, this operation will use `client_id` from the global security.
|
|
33
|
+
|
|
34
|
+
:param date_from: Start date in YYYY-MM-DD format. Enter the first date to include in the research window.
|
|
35
|
+
:param date_to: End date in YYYY-MM-DD format. Enter the last date to include in the research window.
|
|
36
|
+
:param tickers: Comma-separated list of ticker symbols (max 50)
|
|
37
|
+
:param page: Page number for pagination (0-indexed, max 100000)
|
|
38
|
+
:param page_size: Number of results per page. Use this to control pagination size in list views. Enter a value from 1 to 1000 depending on how much data your UI can display.
|
|
39
|
+
:param retries: Override the default retry configuration for this method
|
|
40
|
+
:param server_url: Override the default server URL for this method
|
|
41
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
42
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
43
|
+
"""
|
|
44
|
+
base_url = None
|
|
45
|
+
url_variables = None
|
|
46
|
+
if timeout_ms is None:
|
|
47
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
48
|
+
|
|
49
|
+
if timeout_ms is None:
|
|
50
|
+
timeout_ms = 30000
|
|
51
|
+
|
|
52
|
+
if server_url is not None:
|
|
53
|
+
base_url = server_url
|
|
54
|
+
else:
|
|
55
|
+
base_url = self._get_url(base_url, url_variables)
|
|
56
|
+
|
|
57
|
+
request = models.GetConferenceCallsRequest(
|
|
58
|
+
date_from=date_from,
|
|
59
|
+
date_to=date_to,
|
|
60
|
+
tickers=tickers,
|
|
61
|
+
page=page,
|
|
62
|
+
page_size=page_size,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
req = self._build_request(
|
|
66
|
+
method="GET",
|
|
67
|
+
path="/v1/calendars/conference-calls",
|
|
68
|
+
base_url=base_url,
|
|
69
|
+
url_variables=url_variables,
|
|
70
|
+
request=request,
|
|
71
|
+
request_body_required=False,
|
|
72
|
+
request_has_path_params=False,
|
|
73
|
+
request_has_query_params=True,
|
|
74
|
+
user_agent_header="user-agent",
|
|
75
|
+
accept_header_value="application/json",
|
|
76
|
+
http_headers=http_headers,
|
|
77
|
+
security=self.sdk_configuration.security,
|
|
78
|
+
allow_empty_value=None,
|
|
79
|
+
allowed_fields=["client_id"],
|
|
80
|
+
timeout_ms=timeout_ms,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
if retries == UNSET:
|
|
84
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
85
|
+
retries = self.sdk_configuration.retry_config
|
|
86
|
+
else:
|
|
87
|
+
retries = utils.RetryConfig(
|
|
88
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
retry_config = None
|
|
92
|
+
if isinstance(retries, utils.RetryConfig):
|
|
93
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
94
|
+
|
|
95
|
+
http_res = self.do_request(
|
|
96
|
+
hook_ctx=HookContext(
|
|
97
|
+
config=self.sdk_configuration,
|
|
98
|
+
base_url=base_url or "",
|
|
99
|
+
operation_id="getConferenceCalls",
|
|
100
|
+
oauth2_scopes=["calendar:information"],
|
|
101
|
+
security_source=self.sdk_configuration.security,
|
|
102
|
+
tags=["Calendar"],
|
|
103
|
+
extensions=None,
|
|
104
|
+
),
|
|
105
|
+
request=req,
|
|
106
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
107
|
+
retry_config=retry_config,
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
def next_func() -> Optional[models.GetConferenceCallsResponse]:
|
|
111
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
112
|
+
page = request.page if isinstance(request.page, int) else 1
|
|
113
|
+
next_page = page + 1
|
|
114
|
+
|
|
115
|
+
if not http_res.text:
|
|
116
|
+
return None
|
|
117
|
+
results = JSONPath("$.conferenceCalls").parse(body)
|
|
118
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
119
|
+
return None
|
|
120
|
+
limit_ = request.page_size if isinstance(request.page_size, int) else 0
|
|
121
|
+
if len(results[0]) < limit_:
|
|
122
|
+
return None
|
|
123
|
+
|
|
124
|
+
return self.get_conference_calls(
|
|
125
|
+
date_from=date_from,
|
|
126
|
+
date_to=date_to,
|
|
127
|
+
tickers=tickers,
|
|
128
|
+
page=next_page,
|
|
129
|
+
page_size=page_size,
|
|
130
|
+
retries=retries,
|
|
131
|
+
server_url=server_url,
|
|
132
|
+
timeout_ms=timeout_ms,
|
|
133
|
+
http_headers=http_headers,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
response_data: Any = None
|
|
137
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
138
|
+
return models.GetConferenceCallsResponse(
|
|
139
|
+
conference_calls_response=unmarshal_json_response(
|
|
140
|
+
Optional[models.ConferenceCallsResponse], http_res
|
|
141
|
+
),
|
|
142
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
143
|
+
next=next_func,
|
|
144
|
+
)
|
|
145
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
146
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
147
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
148
|
+
request=req, response=http_res
|
|
149
|
+
)
|
|
150
|
+
raise errors.BadRequest(response_data, http_res)
|
|
151
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
152
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
153
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
154
|
+
request=req, response=http_res
|
|
155
|
+
)
|
|
156
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
157
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
158
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
159
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
160
|
+
request=req, response=http_res
|
|
161
|
+
)
|
|
162
|
+
raise errors.Forbidden(response_data, http_res)
|
|
163
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
164
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
165
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
166
|
+
request=req, response=http_res
|
|
167
|
+
)
|
|
168
|
+
raise errors.NotFound(response_data, http_res)
|
|
169
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
170
|
+
response_data = unmarshal_json_response(
|
|
171
|
+
errors.InternalServerErrorUnion, http_res
|
|
172
|
+
)
|
|
173
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
174
|
+
request=req, response=http_res
|
|
175
|
+
)
|
|
176
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
177
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
178
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
179
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
180
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
181
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
182
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
183
|
+
|
|
184
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
185
|
+
|
|
186
|
+
async def get_conference_calls_async(
|
|
187
|
+
self,
|
|
188
|
+
*,
|
|
189
|
+
date_from: Optional[date] = None,
|
|
190
|
+
date_to: Optional[date] = None,
|
|
191
|
+
tickers: Optional[str] = None,
|
|
192
|
+
page: Optional[int] = None,
|
|
193
|
+
page_size: Optional[int] = None,
|
|
194
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
195
|
+
server_url: Optional[str] = None,
|
|
196
|
+
timeout_ms: Optional[int] = None,
|
|
197
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
198
|
+
) -> Optional[models.GetConferenceCallsResponse]:
|
|
199
|
+
r"""Get Conference Calls
|
|
200
|
+
|
|
201
|
+
Retrieve upcoming and past earnings conference call schedules including dates, times, and dial-in information for management discussions.
|
|
202
|
+
|
|
203
|
+
If set, this operation will use `client_id` from the global security.
|
|
204
|
+
|
|
205
|
+
:param date_from: Start date in YYYY-MM-DD format. Enter the first date to include in the research window.
|
|
206
|
+
:param date_to: End date in YYYY-MM-DD format. Enter the last date to include in the research window.
|
|
207
|
+
:param tickers: Comma-separated list of ticker symbols (max 50)
|
|
208
|
+
:param page: Page number for pagination (0-indexed, max 100000)
|
|
209
|
+
:param page_size: Number of results per page. Use this to control pagination size in list views. Enter a value from 1 to 1000 depending on how much data your UI can display.
|
|
210
|
+
:param retries: Override the default retry configuration for this method
|
|
211
|
+
:param server_url: Override the default server URL for this method
|
|
212
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
213
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
214
|
+
"""
|
|
215
|
+
base_url = None
|
|
216
|
+
url_variables = None
|
|
217
|
+
if timeout_ms is None:
|
|
218
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
219
|
+
|
|
220
|
+
if timeout_ms is None:
|
|
221
|
+
timeout_ms = 30000
|
|
222
|
+
|
|
223
|
+
if server_url is not None:
|
|
224
|
+
base_url = server_url
|
|
225
|
+
else:
|
|
226
|
+
base_url = self._get_url(base_url, url_variables)
|
|
227
|
+
|
|
228
|
+
request = models.GetConferenceCallsRequest(
|
|
229
|
+
date_from=date_from,
|
|
230
|
+
date_to=date_to,
|
|
231
|
+
tickers=tickers,
|
|
232
|
+
page=page,
|
|
233
|
+
page_size=page_size,
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
req = self._build_request_async(
|
|
237
|
+
method="GET",
|
|
238
|
+
path="/v1/calendars/conference-calls",
|
|
239
|
+
base_url=base_url,
|
|
240
|
+
url_variables=url_variables,
|
|
241
|
+
request=request,
|
|
242
|
+
request_body_required=False,
|
|
243
|
+
request_has_path_params=False,
|
|
244
|
+
request_has_query_params=True,
|
|
245
|
+
user_agent_header="user-agent",
|
|
246
|
+
accept_header_value="application/json",
|
|
247
|
+
http_headers=http_headers,
|
|
248
|
+
security=self.sdk_configuration.security,
|
|
249
|
+
allow_empty_value=None,
|
|
250
|
+
allowed_fields=["client_id"],
|
|
251
|
+
timeout_ms=timeout_ms,
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
if retries == UNSET:
|
|
255
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
256
|
+
retries = self.sdk_configuration.retry_config
|
|
257
|
+
else:
|
|
258
|
+
retries = utils.RetryConfig(
|
|
259
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
retry_config = None
|
|
263
|
+
if isinstance(retries, utils.RetryConfig):
|
|
264
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
265
|
+
|
|
266
|
+
http_res = await self.do_request_async(
|
|
267
|
+
hook_ctx=HookContext(
|
|
268
|
+
config=self.sdk_configuration,
|
|
269
|
+
base_url=base_url or "",
|
|
270
|
+
operation_id="getConferenceCalls",
|
|
271
|
+
oauth2_scopes=["calendar:information"],
|
|
272
|
+
security_source=self.sdk_configuration.security,
|
|
273
|
+
tags=["Calendar"],
|
|
274
|
+
extensions=None,
|
|
275
|
+
),
|
|
276
|
+
request=req,
|
|
277
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
278
|
+
retry_config=retry_config,
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
def next_func() -> Optional[models.GetConferenceCallsResponse]:
|
|
282
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
283
|
+
page = request.page if isinstance(request.page, int) else 1
|
|
284
|
+
next_page = page + 1
|
|
285
|
+
|
|
286
|
+
if not http_res.text:
|
|
287
|
+
return None
|
|
288
|
+
results = JSONPath("$.conferenceCalls").parse(body)
|
|
289
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
290
|
+
return None
|
|
291
|
+
limit_ = request.page_size if isinstance(request.page_size, int) else 0
|
|
292
|
+
if len(results[0]) < limit_:
|
|
293
|
+
return None
|
|
294
|
+
|
|
295
|
+
return self.get_conference_calls(
|
|
296
|
+
date_from=date_from,
|
|
297
|
+
date_to=date_to,
|
|
298
|
+
tickers=tickers,
|
|
299
|
+
page=next_page,
|
|
300
|
+
page_size=page_size,
|
|
301
|
+
retries=retries,
|
|
302
|
+
server_url=server_url,
|
|
303
|
+
timeout_ms=timeout_ms,
|
|
304
|
+
http_headers=http_headers,
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
response_data: Any = None
|
|
308
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
309
|
+
return models.GetConferenceCallsResponse(
|
|
310
|
+
conference_calls_response=unmarshal_json_response(
|
|
311
|
+
Optional[models.ConferenceCallsResponse], http_res
|
|
312
|
+
),
|
|
313
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
314
|
+
next=next_func,
|
|
315
|
+
)
|
|
316
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
317
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
318
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
319
|
+
request=req, response=http_res
|
|
320
|
+
)
|
|
321
|
+
raise errors.BadRequest(response_data, http_res)
|
|
322
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
323
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
324
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
325
|
+
request=req, response=http_res
|
|
326
|
+
)
|
|
327
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
328
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
329
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
330
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
331
|
+
request=req, response=http_res
|
|
332
|
+
)
|
|
333
|
+
raise errors.Forbidden(response_data, http_res)
|
|
334
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
335
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
336
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
337
|
+
request=req, response=http_res
|
|
338
|
+
)
|
|
339
|
+
raise errors.NotFound(response_data, http_res)
|
|
340
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
341
|
+
response_data = unmarshal_json_response(
|
|
342
|
+
errors.InternalServerErrorUnion, http_res
|
|
343
|
+
)
|
|
344
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
345
|
+
request=req, response=http_res
|
|
346
|
+
)
|
|
347
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
348
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
349
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
350
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
351
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
352
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
353
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
354
|
+
|
|
355
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
356
|
+
|
|
357
|
+
def get_earnings_calendar(
|
|
358
|
+
self,
|
|
359
|
+
*,
|
|
360
|
+
from_: date,
|
|
361
|
+
to: date,
|
|
362
|
+
symbol: Optional[str] = None,
|
|
363
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
364
|
+
server_url: Optional[str] = None,
|
|
365
|
+
timeout_ms: Optional[int] = None,
|
|
366
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
367
|
+
) -> models.GetEarningsCalendarResponse:
|
|
368
|
+
r"""Get Earnings Calendar
|
|
369
|
+
|
|
370
|
+
Retrieve upcoming earnings release dates and historical earnings announcement schedules for earnings season planning.
|
|
371
|
+
|
|
372
|
+
If set, this operation will use `client_id` from the global security.
|
|
373
|
+
|
|
374
|
+
:param from_: Start date in YYYY-MM-DD format. Enter the first date to include in the research window.
|
|
375
|
+
:param to: End date in YYYY-MM-DD format. Enter the last date to include in the research window.
|
|
376
|
+
:param symbol: Optional stock symbol to filter results. If not provided, returns earnings for all symbols.
|
|
377
|
+
:param retries: Override the default retry configuration for this method
|
|
378
|
+
:param server_url: Override the default server URL for this method
|
|
379
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
380
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
381
|
+
"""
|
|
382
|
+
base_url = None
|
|
383
|
+
url_variables = None
|
|
384
|
+
if timeout_ms is None:
|
|
385
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
386
|
+
|
|
387
|
+
if timeout_ms is None:
|
|
388
|
+
timeout_ms = 30000
|
|
389
|
+
|
|
390
|
+
if server_url is not None:
|
|
391
|
+
base_url = server_url
|
|
392
|
+
else:
|
|
393
|
+
base_url = self._get_url(base_url, url_variables)
|
|
394
|
+
|
|
395
|
+
request = models.GetEarningsCalendarRequest(
|
|
396
|
+
from_=from_,
|
|
397
|
+
to=to,
|
|
398
|
+
symbol=symbol,
|
|
399
|
+
)
|
|
400
|
+
|
|
401
|
+
req = self._build_request(
|
|
402
|
+
method="GET",
|
|
403
|
+
path="/v1/calendars/earnings",
|
|
404
|
+
base_url=base_url,
|
|
405
|
+
url_variables=url_variables,
|
|
406
|
+
request=request,
|
|
407
|
+
request_body_required=False,
|
|
408
|
+
request_has_path_params=False,
|
|
409
|
+
request_has_query_params=True,
|
|
410
|
+
user_agent_header="user-agent",
|
|
411
|
+
accept_header_value="application/json",
|
|
412
|
+
http_headers=http_headers,
|
|
413
|
+
security=self.sdk_configuration.security,
|
|
414
|
+
allow_empty_value=None,
|
|
415
|
+
allowed_fields=["client_id"],
|
|
416
|
+
timeout_ms=timeout_ms,
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
if retries == UNSET:
|
|
420
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
421
|
+
retries = self.sdk_configuration.retry_config
|
|
422
|
+
else:
|
|
423
|
+
retries = utils.RetryConfig(
|
|
424
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
retry_config = None
|
|
428
|
+
if isinstance(retries, utils.RetryConfig):
|
|
429
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
430
|
+
|
|
431
|
+
http_res = self.do_request(
|
|
432
|
+
hook_ctx=HookContext(
|
|
433
|
+
config=self.sdk_configuration,
|
|
434
|
+
base_url=base_url or "",
|
|
435
|
+
operation_id="getEarningsCalendar",
|
|
436
|
+
oauth2_scopes=["calendar:information"],
|
|
437
|
+
security_source=self.sdk_configuration.security,
|
|
438
|
+
tags=["Calendar"],
|
|
439
|
+
extensions=None,
|
|
440
|
+
),
|
|
441
|
+
request=req,
|
|
442
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
443
|
+
retry_config=retry_config,
|
|
444
|
+
)
|
|
445
|
+
|
|
446
|
+
response_data: Any = None
|
|
447
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
448
|
+
return models.GetEarningsCalendarResponse(
|
|
449
|
+
get_earnings_calendar_response=unmarshal_json_response(
|
|
450
|
+
Optional[List[models.EarningRelease]], http_res
|
|
451
|
+
),
|
|
452
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
453
|
+
)
|
|
454
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
455
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
456
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
457
|
+
request=req, response=http_res
|
|
458
|
+
)
|
|
459
|
+
raise errors.BadRequest(response_data, http_res)
|
|
460
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
461
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
462
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
463
|
+
request=req, response=http_res
|
|
464
|
+
)
|
|
465
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
466
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
467
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
468
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
469
|
+
request=req, response=http_res
|
|
470
|
+
)
|
|
471
|
+
raise errors.Forbidden(response_data, http_res)
|
|
472
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
473
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
474
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
475
|
+
request=req, response=http_res
|
|
476
|
+
)
|
|
477
|
+
raise errors.NotFound(response_data, http_res)
|
|
478
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
479
|
+
response_data = unmarshal_json_response(
|
|
480
|
+
errors.InternalServerErrorUnion, http_res
|
|
481
|
+
)
|
|
482
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
483
|
+
request=req, response=http_res
|
|
484
|
+
)
|
|
485
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
486
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
487
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
488
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
489
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
490
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
491
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
492
|
+
|
|
493
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
494
|
+
|
|
495
|
+
async def get_earnings_calendar_async(
|
|
496
|
+
self,
|
|
497
|
+
*,
|
|
498
|
+
from_: date,
|
|
499
|
+
to: date,
|
|
500
|
+
symbol: Optional[str] = None,
|
|
501
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
502
|
+
server_url: Optional[str] = None,
|
|
503
|
+
timeout_ms: Optional[int] = None,
|
|
504
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
505
|
+
) -> models.GetEarningsCalendarResponse:
|
|
506
|
+
r"""Get Earnings Calendar
|
|
507
|
+
|
|
508
|
+
Retrieve upcoming earnings release dates and historical earnings announcement schedules for earnings season planning.
|
|
509
|
+
|
|
510
|
+
If set, this operation will use `client_id` from the global security.
|
|
511
|
+
|
|
512
|
+
:param from_: Start date in YYYY-MM-DD format. Enter the first date to include in the research window.
|
|
513
|
+
:param to: End date in YYYY-MM-DD format. Enter the last date to include in the research window.
|
|
514
|
+
:param symbol: Optional stock symbol to filter results. If not provided, returns earnings for all symbols.
|
|
515
|
+
:param retries: Override the default retry configuration for this method
|
|
516
|
+
:param server_url: Override the default server URL for this method
|
|
517
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
518
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
519
|
+
"""
|
|
520
|
+
base_url = None
|
|
521
|
+
url_variables = None
|
|
522
|
+
if timeout_ms is None:
|
|
523
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
524
|
+
|
|
525
|
+
if timeout_ms is None:
|
|
526
|
+
timeout_ms = 30000
|
|
527
|
+
|
|
528
|
+
if server_url is not None:
|
|
529
|
+
base_url = server_url
|
|
530
|
+
else:
|
|
531
|
+
base_url = self._get_url(base_url, url_variables)
|
|
532
|
+
|
|
533
|
+
request = models.GetEarningsCalendarRequest(
|
|
534
|
+
from_=from_,
|
|
535
|
+
to=to,
|
|
536
|
+
symbol=symbol,
|
|
537
|
+
)
|
|
538
|
+
|
|
539
|
+
req = self._build_request_async(
|
|
540
|
+
method="GET",
|
|
541
|
+
path="/v1/calendars/earnings",
|
|
542
|
+
base_url=base_url,
|
|
543
|
+
url_variables=url_variables,
|
|
544
|
+
request=request,
|
|
545
|
+
request_body_required=False,
|
|
546
|
+
request_has_path_params=False,
|
|
547
|
+
request_has_query_params=True,
|
|
548
|
+
user_agent_header="user-agent",
|
|
549
|
+
accept_header_value="application/json",
|
|
550
|
+
http_headers=http_headers,
|
|
551
|
+
security=self.sdk_configuration.security,
|
|
552
|
+
allow_empty_value=None,
|
|
553
|
+
allowed_fields=["client_id"],
|
|
554
|
+
timeout_ms=timeout_ms,
|
|
555
|
+
)
|
|
556
|
+
|
|
557
|
+
if retries == UNSET:
|
|
558
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
559
|
+
retries = self.sdk_configuration.retry_config
|
|
560
|
+
else:
|
|
561
|
+
retries = utils.RetryConfig(
|
|
562
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
563
|
+
)
|
|
564
|
+
|
|
565
|
+
retry_config = None
|
|
566
|
+
if isinstance(retries, utils.RetryConfig):
|
|
567
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
568
|
+
|
|
569
|
+
http_res = await self.do_request_async(
|
|
570
|
+
hook_ctx=HookContext(
|
|
571
|
+
config=self.sdk_configuration,
|
|
572
|
+
base_url=base_url or "",
|
|
573
|
+
operation_id="getEarningsCalendar",
|
|
574
|
+
oauth2_scopes=["calendar:information"],
|
|
575
|
+
security_source=self.sdk_configuration.security,
|
|
576
|
+
tags=["Calendar"],
|
|
577
|
+
extensions=None,
|
|
578
|
+
),
|
|
579
|
+
request=req,
|
|
580
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
581
|
+
retry_config=retry_config,
|
|
582
|
+
)
|
|
583
|
+
|
|
584
|
+
response_data: Any = None
|
|
585
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
586
|
+
return models.GetEarningsCalendarResponse(
|
|
587
|
+
get_earnings_calendar_response=unmarshal_json_response(
|
|
588
|
+
Optional[List[models.EarningRelease]], http_res
|
|
589
|
+
),
|
|
590
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
591
|
+
)
|
|
592
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
593
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
594
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
595
|
+
request=req, response=http_res
|
|
596
|
+
)
|
|
597
|
+
raise errors.BadRequest(response_data, http_res)
|
|
598
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
599
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
600
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
601
|
+
request=req, response=http_res
|
|
602
|
+
)
|
|
603
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
604
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
605
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
606
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
607
|
+
request=req, response=http_res
|
|
608
|
+
)
|
|
609
|
+
raise errors.Forbidden(response_data, http_res)
|
|
610
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
611
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
612
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
613
|
+
request=req, response=http_res
|
|
614
|
+
)
|
|
615
|
+
raise errors.NotFound(response_data, http_res)
|
|
616
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
617
|
+
response_data = unmarshal_json_response(
|
|
618
|
+
errors.InternalServerErrorUnion, http_res
|
|
619
|
+
)
|
|
620
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
621
|
+
request=req, response=http_res
|
|
622
|
+
)
|
|
623
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
624
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
625
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
626
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
627
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
628
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
629
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
630
|
+
|
|
631
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
632
|
+
|
|
633
|
+
def get_economics_calendar(
|
|
634
|
+
self,
|
|
635
|
+
*,
|
|
636
|
+
date_: Optional[date] = None,
|
|
637
|
+
from_: Optional[date] = None,
|
|
638
|
+
to: Optional[date] = None,
|
|
639
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
640
|
+
server_url: Optional[str] = None,
|
|
641
|
+
timeout_ms: Optional[int] = None,
|
|
642
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
643
|
+
) -> models.GetEconomicsCalendarResponseResponse:
|
|
644
|
+
r"""Get Economics Calendar
|
|
645
|
+
|
|
646
|
+
Retrieve scheduled economic data releases including employment reports, GDP announcements, inflation data, and central bank decisions. Supports two independent query modes: (1) single date, or (2) explicit date range. Use only one mode per request.
|
|
647
|
+
|
|
648
|
+
Supply date, or supply both from and to. A complete from/to range takes precedence when date is also supplied.
|
|
649
|
+
|
|
650
|
+
If set, this operation will use `client_id` from the global security.
|
|
651
|
+
|
|
652
|
+
:param date_: Single date in YYYY-MM-DD format. Returns events for that date plus 1 month ahead. Either 'date' or 'from' must be provided.
|
|
653
|
+
:param from_: Start date of range in YYYY-MM-DD format. Must be used with 'to'. Either 'date' or 'from' must be provided.
|
|
654
|
+
:param to: End date of range in YYYY-MM-DD format. Required when 'from' is specified.
|
|
655
|
+
:param retries: Override the default retry configuration for this method
|
|
656
|
+
:param server_url: Override the default server URL for this method
|
|
657
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
658
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
659
|
+
"""
|
|
660
|
+
base_url = None
|
|
661
|
+
url_variables = None
|
|
662
|
+
if timeout_ms is None:
|
|
663
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
664
|
+
|
|
665
|
+
if timeout_ms is None:
|
|
666
|
+
timeout_ms = 30000
|
|
667
|
+
|
|
668
|
+
if server_url is not None:
|
|
669
|
+
base_url = server_url
|
|
670
|
+
else:
|
|
671
|
+
base_url = self._get_url(base_url, url_variables)
|
|
672
|
+
|
|
673
|
+
request = models.GetEconomicsCalendarRequest(
|
|
674
|
+
date_=date_,
|
|
675
|
+
from_=from_,
|
|
676
|
+
to=to,
|
|
677
|
+
)
|
|
678
|
+
|
|
679
|
+
req = self._build_request(
|
|
680
|
+
method="GET",
|
|
681
|
+
path="/v1/calendars/economics",
|
|
682
|
+
base_url=base_url,
|
|
683
|
+
url_variables=url_variables,
|
|
684
|
+
request=request,
|
|
685
|
+
request_body_required=False,
|
|
686
|
+
request_has_path_params=False,
|
|
687
|
+
request_has_query_params=True,
|
|
688
|
+
user_agent_header="user-agent",
|
|
689
|
+
accept_header_value="application/json",
|
|
690
|
+
http_headers=http_headers,
|
|
691
|
+
security=self.sdk_configuration.security,
|
|
692
|
+
allow_empty_value=None,
|
|
693
|
+
allowed_fields=["client_id"],
|
|
694
|
+
timeout_ms=timeout_ms,
|
|
695
|
+
)
|
|
696
|
+
|
|
697
|
+
if retries == UNSET:
|
|
698
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
699
|
+
retries = self.sdk_configuration.retry_config
|
|
700
|
+
else:
|
|
701
|
+
retries = utils.RetryConfig(
|
|
702
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
703
|
+
)
|
|
704
|
+
|
|
705
|
+
retry_config = None
|
|
706
|
+
if isinstance(retries, utils.RetryConfig):
|
|
707
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
708
|
+
|
|
709
|
+
http_res = self.do_request(
|
|
710
|
+
hook_ctx=HookContext(
|
|
711
|
+
config=self.sdk_configuration,
|
|
712
|
+
base_url=base_url or "",
|
|
713
|
+
operation_id="getEconomicsCalendar",
|
|
714
|
+
oauth2_scopes=["calendar:information"],
|
|
715
|
+
security_source=self.sdk_configuration.security,
|
|
716
|
+
tags=["Calendar"],
|
|
717
|
+
extensions=None,
|
|
718
|
+
),
|
|
719
|
+
request=req,
|
|
720
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
721
|
+
retry_config=retry_config,
|
|
722
|
+
)
|
|
723
|
+
|
|
724
|
+
response_data: Any = None
|
|
725
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
726
|
+
return models.GetEconomicsCalendarResponseResponse(
|
|
727
|
+
get_economics_calendar_response=unmarshal_json_response(
|
|
728
|
+
Optional[models.GetEconomicsCalendarResponse], http_res
|
|
729
|
+
),
|
|
730
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
731
|
+
)
|
|
732
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
733
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
734
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
735
|
+
request=req, response=http_res
|
|
736
|
+
)
|
|
737
|
+
raise errors.BadRequest(response_data, http_res)
|
|
738
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
739
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
740
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
741
|
+
request=req, response=http_res
|
|
742
|
+
)
|
|
743
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
744
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
745
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
746
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
747
|
+
request=req, response=http_res
|
|
748
|
+
)
|
|
749
|
+
raise errors.Forbidden(response_data, http_res)
|
|
750
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
751
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
752
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
753
|
+
request=req, response=http_res
|
|
754
|
+
)
|
|
755
|
+
raise errors.NotFound(response_data, http_res)
|
|
756
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
757
|
+
response_data = unmarshal_json_response(
|
|
758
|
+
errors.InternalServerErrorUnion, http_res
|
|
759
|
+
)
|
|
760
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
761
|
+
request=req, response=http_res
|
|
762
|
+
)
|
|
763
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
764
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
765
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
766
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
767
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
768
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
769
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
770
|
+
|
|
771
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
772
|
+
|
|
773
|
+
async def get_economics_calendar_async(
|
|
774
|
+
self,
|
|
775
|
+
*,
|
|
776
|
+
date_: Optional[date] = None,
|
|
777
|
+
from_: Optional[date] = None,
|
|
778
|
+
to: Optional[date] = None,
|
|
779
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
780
|
+
server_url: Optional[str] = None,
|
|
781
|
+
timeout_ms: Optional[int] = None,
|
|
782
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
783
|
+
) -> models.GetEconomicsCalendarResponseResponse:
|
|
784
|
+
r"""Get Economics Calendar
|
|
785
|
+
|
|
786
|
+
Retrieve scheduled economic data releases including employment reports, GDP announcements, inflation data, and central bank decisions. Supports two independent query modes: (1) single date, or (2) explicit date range. Use only one mode per request.
|
|
787
|
+
|
|
788
|
+
Supply date, or supply both from and to. A complete from/to range takes precedence when date is also supplied.
|
|
789
|
+
|
|
790
|
+
If set, this operation will use `client_id` from the global security.
|
|
791
|
+
|
|
792
|
+
:param date_: Single date in YYYY-MM-DD format. Returns events for that date plus 1 month ahead. Either 'date' or 'from' must be provided.
|
|
793
|
+
:param from_: Start date of range in YYYY-MM-DD format. Must be used with 'to'. Either 'date' or 'from' must be provided.
|
|
794
|
+
:param to: End date of range in YYYY-MM-DD format. Required when 'from' is specified.
|
|
795
|
+
:param retries: Override the default retry configuration for this method
|
|
796
|
+
:param server_url: Override the default server URL for this method
|
|
797
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
798
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
799
|
+
"""
|
|
800
|
+
base_url = None
|
|
801
|
+
url_variables = None
|
|
802
|
+
if timeout_ms is None:
|
|
803
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
804
|
+
|
|
805
|
+
if timeout_ms is None:
|
|
806
|
+
timeout_ms = 30000
|
|
807
|
+
|
|
808
|
+
if server_url is not None:
|
|
809
|
+
base_url = server_url
|
|
810
|
+
else:
|
|
811
|
+
base_url = self._get_url(base_url, url_variables)
|
|
812
|
+
|
|
813
|
+
request = models.GetEconomicsCalendarRequest(
|
|
814
|
+
date_=date_,
|
|
815
|
+
from_=from_,
|
|
816
|
+
to=to,
|
|
817
|
+
)
|
|
818
|
+
|
|
819
|
+
req = self._build_request_async(
|
|
820
|
+
method="GET",
|
|
821
|
+
path="/v1/calendars/economics",
|
|
822
|
+
base_url=base_url,
|
|
823
|
+
url_variables=url_variables,
|
|
824
|
+
request=request,
|
|
825
|
+
request_body_required=False,
|
|
826
|
+
request_has_path_params=False,
|
|
827
|
+
request_has_query_params=True,
|
|
828
|
+
user_agent_header="user-agent",
|
|
829
|
+
accept_header_value="application/json",
|
|
830
|
+
http_headers=http_headers,
|
|
831
|
+
security=self.sdk_configuration.security,
|
|
832
|
+
allow_empty_value=None,
|
|
833
|
+
allowed_fields=["client_id"],
|
|
834
|
+
timeout_ms=timeout_ms,
|
|
835
|
+
)
|
|
836
|
+
|
|
837
|
+
if retries == UNSET:
|
|
838
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
839
|
+
retries = self.sdk_configuration.retry_config
|
|
840
|
+
else:
|
|
841
|
+
retries = utils.RetryConfig(
|
|
842
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
843
|
+
)
|
|
844
|
+
|
|
845
|
+
retry_config = None
|
|
846
|
+
if isinstance(retries, utils.RetryConfig):
|
|
847
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
848
|
+
|
|
849
|
+
http_res = await self.do_request_async(
|
|
850
|
+
hook_ctx=HookContext(
|
|
851
|
+
config=self.sdk_configuration,
|
|
852
|
+
base_url=base_url or "",
|
|
853
|
+
operation_id="getEconomicsCalendar",
|
|
854
|
+
oauth2_scopes=["calendar:information"],
|
|
855
|
+
security_source=self.sdk_configuration.security,
|
|
856
|
+
tags=["Calendar"],
|
|
857
|
+
extensions=None,
|
|
858
|
+
),
|
|
859
|
+
request=req,
|
|
860
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
861
|
+
retry_config=retry_config,
|
|
862
|
+
)
|
|
863
|
+
|
|
864
|
+
response_data: Any = None
|
|
865
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
866
|
+
return models.GetEconomicsCalendarResponseResponse(
|
|
867
|
+
get_economics_calendar_response=unmarshal_json_response(
|
|
868
|
+
Optional[models.GetEconomicsCalendarResponse], http_res
|
|
869
|
+
),
|
|
870
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
871
|
+
)
|
|
872
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
873
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
874
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
875
|
+
request=req, response=http_res
|
|
876
|
+
)
|
|
877
|
+
raise errors.BadRequest(response_data, http_res)
|
|
878
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
879
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
880
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
881
|
+
request=req, response=http_res
|
|
882
|
+
)
|
|
883
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
884
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
885
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
886
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
887
|
+
request=req, response=http_res
|
|
888
|
+
)
|
|
889
|
+
raise errors.Forbidden(response_data, http_res)
|
|
890
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
891
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
892
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
893
|
+
request=req, response=http_res
|
|
894
|
+
)
|
|
895
|
+
raise errors.NotFound(response_data, http_res)
|
|
896
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
897
|
+
response_data = unmarshal_json_response(
|
|
898
|
+
errors.InternalServerErrorUnion, http_res
|
|
899
|
+
)
|
|
900
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
901
|
+
request=req, response=http_res
|
|
902
|
+
)
|
|
903
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
904
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
905
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
906
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
907
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
908
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
909
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
910
|
+
|
|
911
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
912
|
+
|
|
913
|
+
def get_historical_data(
|
|
914
|
+
self,
|
|
915
|
+
*,
|
|
916
|
+
symbol: str,
|
|
917
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
918
|
+
server_url: Optional[str] = None,
|
|
919
|
+
timeout_ms: Optional[int] = None,
|
|
920
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
921
|
+
) -> models.GetHistoricalDataResponse:
|
|
922
|
+
r"""Get Historical Economic Data
|
|
923
|
+
|
|
924
|
+
Retrieve historical time series data for an economic indicator. Returns a direct array of data points (no wrapper). Path parameter **symbol** is the economic indicator symbol (e.g. USURTOT, UNITEDSTACONJOBCLA, UNITEDSTACONCRE). No query parameters.
|
|
925
|
+
|
|
926
|
+
If set, this operation will use `client_id` from the global security.
|
|
927
|
+
|
|
928
|
+
:param symbol: Economic indicator code from the upstream calendar provider. These codes are not a fixed enum on our side — fetch [GET /v1/calendars/economics](/api-reference/calendars/economics) to see the codes attached to recent calendar entries, then use that code here for the historical series. Common examples:
|
|
929
|
+
- `USURTOT` — United States Unemployment Rate (total).
|
|
930
|
+
- `UNITEDSTACONJOBCLA` — U.S. Continuing Jobless Claims.
|
|
931
|
+
- `UNITEDSTACONCRE` — U.S. Consumer Credit.
|
|
932
|
+
:param retries: Override the default retry configuration for this method
|
|
933
|
+
:param server_url: Override the default server URL for this method
|
|
934
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
935
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
936
|
+
"""
|
|
937
|
+
base_url = None
|
|
938
|
+
url_variables = None
|
|
939
|
+
if timeout_ms is None:
|
|
940
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
941
|
+
|
|
942
|
+
if timeout_ms is None:
|
|
943
|
+
timeout_ms = 30000
|
|
944
|
+
|
|
945
|
+
if server_url is not None:
|
|
946
|
+
base_url = server_url
|
|
947
|
+
else:
|
|
948
|
+
base_url = self._get_url(base_url, url_variables)
|
|
949
|
+
|
|
950
|
+
request = models.GetHistoricalDataRequest(
|
|
951
|
+
symbol=symbol,
|
|
952
|
+
)
|
|
953
|
+
|
|
954
|
+
req = self._build_request(
|
|
955
|
+
method="GET",
|
|
956
|
+
path="/v1/calendars/historical/{symbol}",
|
|
957
|
+
base_url=base_url,
|
|
958
|
+
url_variables=url_variables,
|
|
959
|
+
request=request,
|
|
960
|
+
request_body_required=False,
|
|
961
|
+
request_has_path_params=True,
|
|
962
|
+
request_has_query_params=True,
|
|
963
|
+
user_agent_header="user-agent",
|
|
964
|
+
accept_header_value="application/json",
|
|
965
|
+
http_headers=http_headers,
|
|
966
|
+
security=self.sdk_configuration.security,
|
|
967
|
+
allow_empty_value=None,
|
|
968
|
+
allowed_fields=["client_id"],
|
|
969
|
+
timeout_ms=timeout_ms,
|
|
970
|
+
)
|
|
971
|
+
|
|
972
|
+
if retries == UNSET:
|
|
973
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
974
|
+
retries = self.sdk_configuration.retry_config
|
|
975
|
+
else:
|
|
976
|
+
retries = utils.RetryConfig(
|
|
977
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
978
|
+
)
|
|
979
|
+
|
|
980
|
+
retry_config = None
|
|
981
|
+
if isinstance(retries, utils.RetryConfig):
|
|
982
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
983
|
+
|
|
984
|
+
http_res = self.do_request(
|
|
985
|
+
hook_ctx=HookContext(
|
|
986
|
+
config=self.sdk_configuration,
|
|
987
|
+
base_url=base_url or "",
|
|
988
|
+
operation_id="getHistoricalData",
|
|
989
|
+
oauth2_scopes=["calendar:information"],
|
|
990
|
+
security_source=self.sdk_configuration.security,
|
|
991
|
+
tags=["Calendar"],
|
|
992
|
+
extensions=None,
|
|
993
|
+
),
|
|
994
|
+
request=req,
|
|
995
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
996
|
+
retry_config=retry_config,
|
|
997
|
+
)
|
|
998
|
+
|
|
999
|
+
response_data: Any = None
|
|
1000
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
1001
|
+
return models.GetHistoricalDataResponse(
|
|
1002
|
+
get_historical_data_response=unmarshal_json_response(
|
|
1003
|
+
Optional[List[models.EconomicsIndicator]], http_res
|
|
1004
|
+
),
|
|
1005
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
1006
|
+
)
|
|
1007
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
1008
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
1009
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1010
|
+
request=req, response=http_res
|
|
1011
|
+
)
|
|
1012
|
+
raise errors.BadRequest(response_data, http_res)
|
|
1013
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
1014
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
1015
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1016
|
+
request=req, response=http_res
|
|
1017
|
+
)
|
|
1018
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
1019
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
1020
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
1021
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1022
|
+
request=req, response=http_res
|
|
1023
|
+
)
|
|
1024
|
+
raise errors.Forbidden(response_data, http_res)
|
|
1025
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
1026
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
1027
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1028
|
+
request=req, response=http_res
|
|
1029
|
+
)
|
|
1030
|
+
raise errors.NotFound(response_data, http_res)
|
|
1031
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
1032
|
+
response_data = unmarshal_json_response(
|
|
1033
|
+
errors.InternalServerErrorUnion, http_res
|
|
1034
|
+
)
|
|
1035
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1036
|
+
request=req, response=http_res
|
|
1037
|
+
)
|
|
1038
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
1039
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1040
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1041
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1042
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1043
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1044
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1045
|
+
|
|
1046
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
1047
|
+
|
|
1048
|
+
async def get_historical_data_async(
|
|
1049
|
+
self,
|
|
1050
|
+
*,
|
|
1051
|
+
symbol: str,
|
|
1052
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1053
|
+
server_url: Optional[str] = None,
|
|
1054
|
+
timeout_ms: Optional[int] = None,
|
|
1055
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
1056
|
+
) -> models.GetHistoricalDataResponse:
|
|
1057
|
+
r"""Get Historical Economic Data
|
|
1058
|
+
|
|
1059
|
+
Retrieve historical time series data for an economic indicator. Returns a direct array of data points (no wrapper). Path parameter **symbol** is the economic indicator symbol (e.g. USURTOT, UNITEDSTACONJOBCLA, UNITEDSTACONCRE). No query parameters.
|
|
1060
|
+
|
|
1061
|
+
If set, this operation will use `client_id` from the global security.
|
|
1062
|
+
|
|
1063
|
+
:param symbol: Economic indicator code from the upstream calendar provider. These codes are not a fixed enum on our side — fetch [GET /v1/calendars/economics](/api-reference/calendars/economics) to see the codes attached to recent calendar entries, then use that code here for the historical series. Common examples:
|
|
1064
|
+
- `USURTOT` — United States Unemployment Rate (total).
|
|
1065
|
+
- `UNITEDSTACONJOBCLA` — U.S. Continuing Jobless Claims.
|
|
1066
|
+
- `UNITEDSTACONCRE` — U.S. Consumer Credit.
|
|
1067
|
+
:param retries: Override the default retry configuration for this method
|
|
1068
|
+
:param server_url: Override the default server URL for this method
|
|
1069
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1070
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
1071
|
+
"""
|
|
1072
|
+
base_url = None
|
|
1073
|
+
url_variables = None
|
|
1074
|
+
if timeout_ms is None:
|
|
1075
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1076
|
+
|
|
1077
|
+
if timeout_ms is None:
|
|
1078
|
+
timeout_ms = 30000
|
|
1079
|
+
|
|
1080
|
+
if server_url is not None:
|
|
1081
|
+
base_url = server_url
|
|
1082
|
+
else:
|
|
1083
|
+
base_url = self._get_url(base_url, url_variables)
|
|
1084
|
+
|
|
1085
|
+
request = models.GetHistoricalDataRequest(
|
|
1086
|
+
symbol=symbol,
|
|
1087
|
+
)
|
|
1088
|
+
|
|
1089
|
+
req = self._build_request_async(
|
|
1090
|
+
method="GET",
|
|
1091
|
+
path="/v1/calendars/historical/{symbol}",
|
|
1092
|
+
base_url=base_url,
|
|
1093
|
+
url_variables=url_variables,
|
|
1094
|
+
request=request,
|
|
1095
|
+
request_body_required=False,
|
|
1096
|
+
request_has_path_params=True,
|
|
1097
|
+
request_has_query_params=True,
|
|
1098
|
+
user_agent_header="user-agent",
|
|
1099
|
+
accept_header_value="application/json",
|
|
1100
|
+
http_headers=http_headers,
|
|
1101
|
+
security=self.sdk_configuration.security,
|
|
1102
|
+
allow_empty_value=None,
|
|
1103
|
+
allowed_fields=["client_id"],
|
|
1104
|
+
timeout_ms=timeout_ms,
|
|
1105
|
+
)
|
|
1106
|
+
|
|
1107
|
+
if retries == UNSET:
|
|
1108
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
1109
|
+
retries = self.sdk_configuration.retry_config
|
|
1110
|
+
else:
|
|
1111
|
+
retries = utils.RetryConfig(
|
|
1112
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
1113
|
+
)
|
|
1114
|
+
|
|
1115
|
+
retry_config = None
|
|
1116
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1117
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
1118
|
+
|
|
1119
|
+
http_res = await self.do_request_async(
|
|
1120
|
+
hook_ctx=HookContext(
|
|
1121
|
+
config=self.sdk_configuration,
|
|
1122
|
+
base_url=base_url or "",
|
|
1123
|
+
operation_id="getHistoricalData",
|
|
1124
|
+
oauth2_scopes=["calendar:information"],
|
|
1125
|
+
security_source=self.sdk_configuration.security,
|
|
1126
|
+
tags=["Calendar"],
|
|
1127
|
+
extensions=None,
|
|
1128
|
+
),
|
|
1129
|
+
request=req,
|
|
1130
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
1131
|
+
retry_config=retry_config,
|
|
1132
|
+
)
|
|
1133
|
+
|
|
1134
|
+
response_data: Any = None
|
|
1135
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
1136
|
+
return models.GetHistoricalDataResponse(
|
|
1137
|
+
get_historical_data_response=unmarshal_json_response(
|
|
1138
|
+
Optional[List[models.EconomicsIndicator]], http_res
|
|
1139
|
+
),
|
|
1140
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
1141
|
+
)
|
|
1142
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
1143
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
1144
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1145
|
+
request=req, response=http_res
|
|
1146
|
+
)
|
|
1147
|
+
raise errors.BadRequest(response_data, http_res)
|
|
1148
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
1149
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
1150
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1151
|
+
request=req, response=http_res
|
|
1152
|
+
)
|
|
1153
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
1154
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
1155
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
1156
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1157
|
+
request=req, response=http_res
|
|
1158
|
+
)
|
|
1159
|
+
raise errors.Forbidden(response_data, http_res)
|
|
1160
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
1161
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
1162
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1163
|
+
request=req, response=http_res
|
|
1164
|
+
)
|
|
1165
|
+
raise errors.NotFound(response_data, http_res)
|
|
1166
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
1167
|
+
response_data = unmarshal_json_response(
|
|
1168
|
+
errors.InternalServerErrorUnion, http_res
|
|
1169
|
+
)
|
|
1170
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1171
|
+
request=req, response=http_res
|
|
1172
|
+
)
|
|
1173
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
1174
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1175
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1176
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1177
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1178
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1179
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1180
|
+
|
|
1181
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
1182
|
+
|
|
1183
|
+
def get_mergers_and_acquisitions(
|
|
1184
|
+
self,
|
|
1185
|
+
*,
|
|
1186
|
+
date_from: Optional[date] = None,
|
|
1187
|
+
date_to: Optional[date] = None,
|
|
1188
|
+
tickers: Optional[str] = None,
|
|
1189
|
+
page: Optional[int] = None,
|
|
1190
|
+
page_size: Optional[int] = None,
|
|
1191
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1192
|
+
server_url: Optional[str] = None,
|
|
1193
|
+
timeout_ms: Optional[int] = None,
|
|
1194
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
1195
|
+
) -> Optional[models.GetMergersAndAcquisitionsResponse]:
|
|
1196
|
+
r"""Get Mergers & Acquisitions
|
|
1197
|
+
|
|
1198
|
+
Retrieve M&A activity including announced deals, merger terms, acquisition prices, and transaction timelines.
|
|
1199
|
+
|
|
1200
|
+
If set, this operation will use `client_id` from the global security.
|
|
1201
|
+
|
|
1202
|
+
:param date_from: Start date in YYYY-MM-DD format. Enter the first date to include in the research window.
|
|
1203
|
+
:param date_to: End date in YYYY-MM-DD format. Enter the last date to include in the research window.
|
|
1204
|
+
:param tickers: Comma-separated ticker symbols, such as AAPL,MSFT. Use this to request or filter multiple companies in one call.
|
|
1205
|
+
:param page: Zero-based page offset. Enter 0 for the first page of results.
|
|
1206
|
+
:param page_size: Number of results per page. Use this to control pagination size in list views. (1-1000)
|
|
1207
|
+
:param retries: Override the default retry configuration for this method
|
|
1208
|
+
:param server_url: Override the default server URL for this method
|
|
1209
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1210
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
1211
|
+
"""
|
|
1212
|
+
base_url = None
|
|
1213
|
+
url_variables = None
|
|
1214
|
+
if timeout_ms is None:
|
|
1215
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1216
|
+
|
|
1217
|
+
if timeout_ms is None:
|
|
1218
|
+
timeout_ms = 30000
|
|
1219
|
+
|
|
1220
|
+
if server_url is not None:
|
|
1221
|
+
base_url = server_url
|
|
1222
|
+
else:
|
|
1223
|
+
base_url = self._get_url(base_url, url_variables)
|
|
1224
|
+
|
|
1225
|
+
request = models.GetMergersAndAcquisitionsRequest(
|
|
1226
|
+
date_from=date_from,
|
|
1227
|
+
date_to=date_to,
|
|
1228
|
+
tickers=tickers,
|
|
1229
|
+
page=page,
|
|
1230
|
+
page_size=page_size,
|
|
1231
|
+
)
|
|
1232
|
+
|
|
1233
|
+
req = self._build_request(
|
|
1234
|
+
method="GET",
|
|
1235
|
+
path="/v1/calendars/mergers-acquisitions",
|
|
1236
|
+
base_url=base_url,
|
|
1237
|
+
url_variables=url_variables,
|
|
1238
|
+
request=request,
|
|
1239
|
+
request_body_required=False,
|
|
1240
|
+
request_has_path_params=False,
|
|
1241
|
+
request_has_query_params=True,
|
|
1242
|
+
user_agent_header="user-agent",
|
|
1243
|
+
accept_header_value="application/json",
|
|
1244
|
+
http_headers=http_headers,
|
|
1245
|
+
security=self.sdk_configuration.security,
|
|
1246
|
+
allow_empty_value=None,
|
|
1247
|
+
allowed_fields=["client_id"],
|
|
1248
|
+
timeout_ms=timeout_ms,
|
|
1249
|
+
)
|
|
1250
|
+
|
|
1251
|
+
if retries == UNSET:
|
|
1252
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
1253
|
+
retries = self.sdk_configuration.retry_config
|
|
1254
|
+
else:
|
|
1255
|
+
retries = utils.RetryConfig(
|
|
1256
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
1257
|
+
)
|
|
1258
|
+
|
|
1259
|
+
retry_config = None
|
|
1260
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1261
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
1262
|
+
|
|
1263
|
+
http_res = self.do_request(
|
|
1264
|
+
hook_ctx=HookContext(
|
|
1265
|
+
config=self.sdk_configuration,
|
|
1266
|
+
base_url=base_url or "",
|
|
1267
|
+
operation_id="getMergersAndAcquisitions",
|
|
1268
|
+
oauth2_scopes=["calendar:information"],
|
|
1269
|
+
security_source=self.sdk_configuration.security,
|
|
1270
|
+
tags=["Calendar"],
|
|
1271
|
+
extensions=None,
|
|
1272
|
+
),
|
|
1273
|
+
request=req,
|
|
1274
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
1275
|
+
retry_config=retry_config,
|
|
1276
|
+
)
|
|
1277
|
+
|
|
1278
|
+
def next_func() -> Optional[models.GetMergersAndAcquisitionsResponse]:
|
|
1279
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
1280
|
+
page = request.page if isinstance(request.page, int) else 1
|
|
1281
|
+
next_page = page + 1
|
|
1282
|
+
|
|
1283
|
+
if not http_res.text:
|
|
1284
|
+
return None
|
|
1285
|
+
results = JSONPath("$.mergersAcquisitions").parse(body)
|
|
1286
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
1287
|
+
return None
|
|
1288
|
+
limit_ = request.page_size if isinstance(request.page_size, int) else 0
|
|
1289
|
+
if len(results[0]) < limit_:
|
|
1290
|
+
return None
|
|
1291
|
+
|
|
1292
|
+
return self.get_mergers_and_acquisitions(
|
|
1293
|
+
date_from=date_from,
|
|
1294
|
+
date_to=date_to,
|
|
1295
|
+
tickers=tickers,
|
|
1296
|
+
page=next_page,
|
|
1297
|
+
page_size=page_size,
|
|
1298
|
+
retries=retries,
|
|
1299
|
+
server_url=server_url,
|
|
1300
|
+
timeout_ms=timeout_ms,
|
|
1301
|
+
http_headers=http_headers,
|
|
1302
|
+
)
|
|
1303
|
+
|
|
1304
|
+
response_data: Any = None
|
|
1305
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
1306
|
+
return models.GetMergersAndAcquisitionsResponse(
|
|
1307
|
+
mergers_and_acquisitions_response=unmarshal_json_response(
|
|
1308
|
+
Optional[models.MergersAndAcquisitionsResponse], http_res
|
|
1309
|
+
),
|
|
1310
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
1311
|
+
next=next_func,
|
|
1312
|
+
)
|
|
1313
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
1314
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
1315
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1316
|
+
request=req, response=http_res
|
|
1317
|
+
)
|
|
1318
|
+
raise errors.BadRequest(response_data, http_res)
|
|
1319
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
1320
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
1321
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1322
|
+
request=req, response=http_res
|
|
1323
|
+
)
|
|
1324
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
1325
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
1326
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
1327
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1328
|
+
request=req, response=http_res
|
|
1329
|
+
)
|
|
1330
|
+
raise errors.Forbidden(response_data, http_res)
|
|
1331
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
1332
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
1333
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1334
|
+
request=req, response=http_res
|
|
1335
|
+
)
|
|
1336
|
+
raise errors.NotFound(response_data, http_res)
|
|
1337
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
1338
|
+
response_data = unmarshal_json_response(
|
|
1339
|
+
errors.InternalServerErrorUnion, http_res
|
|
1340
|
+
)
|
|
1341
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1342
|
+
request=req, response=http_res
|
|
1343
|
+
)
|
|
1344
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
1345
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1346
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1347
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1348
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1349
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
1350
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1351
|
+
|
|
1352
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
1353
|
+
|
|
1354
|
+
async def get_mergers_and_acquisitions_async(
|
|
1355
|
+
self,
|
|
1356
|
+
*,
|
|
1357
|
+
date_from: Optional[date] = None,
|
|
1358
|
+
date_to: Optional[date] = None,
|
|
1359
|
+
tickers: Optional[str] = None,
|
|
1360
|
+
page: Optional[int] = None,
|
|
1361
|
+
page_size: Optional[int] = None,
|
|
1362
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1363
|
+
server_url: Optional[str] = None,
|
|
1364
|
+
timeout_ms: Optional[int] = None,
|
|
1365
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
1366
|
+
) -> Optional[models.GetMergersAndAcquisitionsResponse]:
|
|
1367
|
+
r"""Get Mergers & Acquisitions
|
|
1368
|
+
|
|
1369
|
+
Retrieve M&A activity including announced deals, merger terms, acquisition prices, and transaction timelines.
|
|
1370
|
+
|
|
1371
|
+
If set, this operation will use `client_id` from the global security.
|
|
1372
|
+
|
|
1373
|
+
:param date_from: Start date in YYYY-MM-DD format. Enter the first date to include in the research window.
|
|
1374
|
+
:param date_to: End date in YYYY-MM-DD format. Enter the last date to include in the research window.
|
|
1375
|
+
:param tickers: Comma-separated ticker symbols, such as AAPL,MSFT. Use this to request or filter multiple companies in one call.
|
|
1376
|
+
:param page: Zero-based page offset. Enter 0 for the first page of results.
|
|
1377
|
+
:param page_size: Number of results per page. Use this to control pagination size in list views. (1-1000)
|
|
1378
|
+
:param retries: Override the default retry configuration for this method
|
|
1379
|
+
:param server_url: Override the default server URL for this method
|
|
1380
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1381
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
1382
|
+
"""
|
|
1383
|
+
base_url = None
|
|
1384
|
+
url_variables = None
|
|
1385
|
+
if timeout_ms is None:
|
|
1386
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1387
|
+
|
|
1388
|
+
if timeout_ms is None:
|
|
1389
|
+
timeout_ms = 30000
|
|
1390
|
+
|
|
1391
|
+
if server_url is not None:
|
|
1392
|
+
base_url = server_url
|
|
1393
|
+
else:
|
|
1394
|
+
base_url = self._get_url(base_url, url_variables)
|
|
1395
|
+
|
|
1396
|
+
request = models.GetMergersAndAcquisitionsRequest(
|
|
1397
|
+
date_from=date_from,
|
|
1398
|
+
date_to=date_to,
|
|
1399
|
+
tickers=tickers,
|
|
1400
|
+
page=page,
|
|
1401
|
+
page_size=page_size,
|
|
1402
|
+
)
|
|
1403
|
+
|
|
1404
|
+
req = self._build_request_async(
|
|
1405
|
+
method="GET",
|
|
1406
|
+
path="/v1/calendars/mergers-acquisitions",
|
|
1407
|
+
base_url=base_url,
|
|
1408
|
+
url_variables=url_variables,
|
|
1409
|
+
request=request,
|
|
1410
|
+
request_body_required=False,
|
|
1411
|
+
request_has_path_params=False,
|
|
1412
|
+
request_has_query_params=True,
|
|
1413
|
+
user_agent_header="user-agent",
|
|
1414
|
+
accept_header_value="application/json",
|
|
1415
|
+
http_headers=http_headers,
|
|
1416
|
+
security=self.sdk_configuration.security,
|
|
1417
|
+
allow_empty_value=None,
|
|
1418
|
+
allowed_fields=["client_id"],
|
|
1419
|
+
timeout_ms=timeout_ms,
|
|
1420
|
+
)
|
|
1421
|
+
|
|
1422
|
+
if retries == UNSET:
|
|
1423
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
1424
|
+
retries = self.sdk_configuration.retry_config
|
|
1425
|
+
else:
|
|
1426
|
+
retries = utils.RetryConfig(
|
|
1427
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
1428
|
+
)
|
|
1429
|
+
|
|
1430
|
+
retry_config = None
|
|
1431
|
+
if isinstance(retries, utils.RetryConfig):
|
|
1432
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
1433
|
+
|
|
1434
|
+
http_res = await self.do_request_async(
|
|
1435
|
+
hook_ctx=HookContext(
|
|
1436
|
+
config=self.sdk_configuration,
|
|
1437
|
+
base_url=base_url or "",
|
|
1438
|
+
operation_id="getMergersAndAcquisitions",
|
|
1439
|
+
oauth2_scopes=["calendar:information"],
|
|
1440
|
+
security_source=self.sdk_configuration.security,
|
|
1441
|
+
tags=["Calendar"],
|
|
1442
|
+
extensions=None,
|
|
1443
|
+
),
|
|
1444
|
+
request=req,
|
|
1445
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
1446
|
+
retry_config=retry_config,
|
|
1447
|
+
)
|
|
1448
|
+
|
|
1449
|
+
def next_func() -> Optional[models.GetMergersAndAcquisitionsResponse]:
|
|
1450
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
1451
|
+
page = request.page if isinstance(request.page, int) else 1
|
|
1452
|
+
next_page = page + 1
|
|
1453
|
+
|
|
1454
|
+
if not http_res.text:
|
|
1455
|
+
return None
|
|
1456
|
+
results = JSONPath("$.mergersAcquisitions").parse(body)
|
|
1457
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
1458
|
+
return None
|
|
1459
|
+
limit_ = request.page_size if isinstance(request.page_size, int) else 0
|
|
1460
|
+
if len(results[0]) < limit_:
|
|
1461
|
+
return None
|
|
1462
|
+
|
|
1463
|
+
return self.get_mergers_and_acquisitions(
|
|
1464
|
+
date_from=date_from,
|
|
1465
|
+
date_to=date_to,
|
|
1466
|
+
tickers=tickers,
|
|
1467
|
+
page=next_page,
|
|
1468
|
+
page_size=page_size,
|
|
1469
|
+
retries=retries,
|
|
1470
|
+
server_url=server_url,
|
|
1471
|
+
timeout_ms=timeout_ms,
|
|
1472
|
+
http_headers=http_headers,
|
|
1473
|
+
)
|
|
1474
|
+
|
|
1475
|
+
response_data: Any = None
|
|
1476
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
1477
|
+
return models.GetMergersAndAcquisitionsResponse(
|
|
1478
|
+
mergers_and_acquisitions_response=unmarshal_json_response(
|
|
1479
|
+
Optional[models.MergersAndAcquisitionsResponse], http_res
|
|
1480
|
+
),
|
|
1481
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
1482
|
+
next=next_func,
|
|
1483
|
+
)
|
|
1484
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
1485
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
1486
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1487
|
+
request=req, response=http_res
|
|
1488
|
+
)
|
|
1489
|
+
raise errors.BadRequest(response_data, http_res)
|
|
1490
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
1491
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
1492
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1493
|
+
request=req, response=http_res
|
|
1494
|
+
)
|
|
1495
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
1496
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
1497
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
1498
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1499
|
+
request=req, response=http_res
|
|
1500
|
+
)
|
|
1501
|
+
raise errors.Forbidden(response_data, http_res)
|
|
1502
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
1503
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
1504
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1505
|
+
request=req, response=http_res
|
|
1506
|
+
)
|
|
1507
|
+
raise errors.NotFound(response_data, http_res)
|
|
1508
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
1509
|
+
response_data = unmarshal_json_response(
|
|
1510
|
+
errors.InternalServerErrorUnion, http_res
|
|
1511
|
+
)
|
|
1512
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
1513
|
+
request=req, response=http_res
|
|
1514
|
+
)
|
|
1515
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
1516
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
1517
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1518
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1519
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
1520
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1521
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1522
|
+
|
|
1523
|
+
raise errors.APIError("Unexpected response received", http_res)
|