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/logos.py
ADDED
|
@@ -0,0 +1,692 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 1a647a0e535e
|
|
3
|
+
|
|
4
|
+
from .basesdk import BaseSDK
|
|
5
|
+
from finance_dev import errors, models, utils
|
|
6
|
+
from finance_dev._hooks import HookContext
|
|
7
|
+
from finance_dev.types import OptionalNullable, UNSET
|
|
8
|
+
from finance_dev.utils.unmarshal_json_response import unmarshal_json_response
|
|
9
|
+
from jsonpath import JSONPath
|
|
10
|
+
from typing import Any, Dict, List, Mapping, Optional, Union
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Logos(BaseSDK):
|
|
14
|
+
def search_logos(
|
|
15
|
+
self,
|
|
16
|
+
*,
|
|
17
|
+
search_keys: str,
|
|
18
|
+
fields: str,
|
|
19
|
+
search_keys_type: Optional[models.SearchLogosSearchKeysType] = None,
|
|
20
|
+
composite_auto: Optional[bool] = False,
|
|
21
|
+
composite_radius: Optional[int] = None,
|
|
22
|
+
scale: Optional[str] = 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
|
+
) -> models.SearchLogosResponse:
|
|
28
|
+
r"""Search Company Logos
|
|
29
|
+
|
|
30
|
+
Search for company logos and brand assets by ticker symbol or company name for use in financial applications and dashboards.
|
|
31
|
+
|
|
32
|
+
If set, this operation will use `client_id` from the global security.
|
|
33
|
+
|
|
34
|
+
:param search_keys: One or more values to look up, comma-separated. The format depends on `searchKeysType`. For example, with `searchKeysType=symbol` send `AAPL,MSFT`; with `searchKeysType=cik` send `0000320193,0000789019`.
|
|
35
|
+
:param fields: Comma-separated list of logo asset fields to return. Common values:
|
|
36
|
+
- `logo_light` — full logo for light backgrounds.
|
|
37
|
+
- `logo_dark` — full logo for dark backgrounds.
|
|
38
|
+
- `mark_light` — square/icon mark for light backgrounds.
|
|
39
|
+
- `mark_dark` — square/icon mark for dark backgrounds.
|
|
40
|
+
|
|
41
|
+
Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
|
|
42
|
+
:param search_keys_type: Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
|
|
43
|
+
- `firm_id` — the value is a firm/company internal ID.
|
|
44
|
+
- `firm` — the value is the firm/company name.
|
|
45
|
+
:param composite_auto: Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo.
|
|
46
|
+
:param composite_radius: Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style.
|
|
47
|
+
:param scale: Image scale for returned logo URLs. Use higher scale values for high-density displays.
|
|
48
|
+
:param retries: Override the default retry configuration for this method
|
|
49
|
+
:param server_url: Override the default server URL for this method
|
|
50
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
51
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
52
|
+
"""
|
|
53
|
+
base_url = None
|
|
54
|
+
url_variables = None
|
|
55
|
+
if timeout_ms is None:
|
|
56
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
57
|
+
|
|
58
|
+
if timeout_ms is None:
|
|
59
|
+
timeout_ms = 30000
|
|
60
|
+
|
|
61
|
+
if server_url is not None:
|
|
62
|
+
base_url = server_url
|
|
63
|
+
else:
|
|
64
|
+
base_url = self._get_url(base_url, url_variables)
|
|
65
|
+
|
|
66
|
+
request = models.SearchLogosRequest(
|
|
67
|
+
search_keys=search_keys,
|
|
68
|
+
search_keys_type=search_keys_type,
|
|
69
|
+
fields=fields,
|
|
70
|
+
composite_auto=composite_auto,
|
|
71
|
+
composite_radius=composite_radius,
|
|
72
|
+
scale=scale,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
req = self._build_request(
|
|
76
|
+
method="GET",
|
|
77
|
+
path="/v1/logos/search",
|
|
78
|
+
base_url=base_url,
|
|
79
|
+
url_variables=url_variables,
|
|
80
|
+
request=request,
|
|
81
|
+
request_body_required=False,
|
|
82
|
+
request_has_path_params=False,
|
|
83
|
+
request_has_query_params=True,
|
|
84
|
+
user_agent_header="user-agent",
|
|
85
|
+
accept_header_value="application/json",
|
|
86
|
+
http_headers=http_headers,
|
|
87
|
+
security=self.sdk_configuration.security,
|
|
88
|
+
allow_empty_value=None,
|
|
89
|
+
allowed_fields=["client_id"],
|
|
90
|
+
timeout_ms=timeout_ms,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
if retries == UNSET:
|
|
94
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
95
|
+
retries = self.sdk_configuration.retry_config
|
|
96
|
+
else:
|
|
97
|
+
retries = utils.RetryConfig(
|
|
98
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
retry_config = None
|
|
102
|
+
if isinstance(retries, utils.RetryConfig):
|
|
103
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
104
|
+
|
|
105
|
+
http_res = self.do_request(
|
|
106
|
+
hook_ctx=HookContext(
|
|
107
|
+
config=self.sdk_configuration,
|
|
108
|
+
base_url=base_url or "",
|
|
109
|
+
operation_id="searchLogos",
|
|
110
|
+
oauth2_scopes=["market:supplemental"],
|
|
111
|
+
security_source=self.sdk_configuration.security,
|
|
112
|
+
tags=["Logos"],
|
|
113
|
+
extensions=None,
|
|
114
|
+
),
|
|
115
|
+
request=req,
|
|
116
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
117
|
+
retry_config=retry_config,
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
response_data: Any = None
|
|
121
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
122
|
+
return models.SearchLogosResponse(
|
|
123
|
+
logo_search_response=unmarshal_json_response(
|
|
124
|
+
Optional[models.LogoSearchResponse], http_res
|
|
125
|
+
),
|
|
126
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
127
|
+
)
|
|
128
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
129
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
130
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
131
|
+
request=req, response=http_res
|
|
132
|
+
)
|
|
133
|
+
raise errors.BadRequest(response_data, http_res)
|
|
134
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
135
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
136
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
137
|
+
request=req, response=http_res
|
|
138
|
+
)
|
|
139
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
140
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
141
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
142
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
143
|
+
request=req, response=http_res
|
|
144
|
+
)
|
|
145
|
+
raise errors.Forbidden(response_data, http_res)
|
|
146
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
147
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
148
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
149
|
+
request=req, response=http_res
|
|
150
|
+
)
|
|
151
|
+
raise errors.NotFound(response_data, http_res)
|
|
152
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
153
|
+
response_data = unmarshal_json_response(
|
|
154
|
+
errors.InternalServerErrorUnion, http_res
|
|
155
|
+
)
|
|
156
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
157
|
+
request=req, response=http_res
|
|
158
|
+
)
|
|
159
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
160
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
161
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
162
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
163
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
164
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
165
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
166
|
+
|
|
167
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
168
|
+
|
|
169
|
+
async def search_logos_async(
|
|
170
|
+
self,
|
|
171
|
+
*,
|
|
172
|
+
search_keys: str,
|
|
173
|
+
fields: str,
|
|
174
|
+
search_keys_type: Optional[models.SearchLogosSearchKeysType] = None,
|
|
175
|
+
composite_auto: Optional[bool] = False,
|
|
176
|
+
composite_radius: Optional[int] = None,
|
|
177
|
+
scale: Optional[str] = None,
|
|
178
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
179
|
+
server_url: Optional[str] = None,
|
|
180
|
+
timeout_ms: Optional[int] = None,
|
|
181
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
182
|
+
) -> models.SearchLogosResponse:
|
|
183
|
+
r"""Search Company Logos
|
|
184
|
+
|
|
185
|
+
Search for company logos and brand assets by ticker symbol or company name for use in financial applications and dashboards.
|
|
186
|
+
|
|
187
|
+
If set, this operation will use `client_id` from the global security.
|
|
188
|
+
|
|
189
|
+
:param search_keys: One or more values to look up, comma-separated. The format depends on `searchKeysType`. For example, with `searchKeysType=symbol` send `AAPL,MSFT`; with `searchKeysType=cik` send `0000320193,0000789019`.
|
|
190
|
+
:param fields: Comma-separated list of logo asset fields to return. Common values:
|
|
191
|
+
- `logo_light` — full logo for light backgrounds.
|
|
192
|
+
- `logo_dark` — full logo for dark backgrounds.
|
|
193
|
+
- `mark_light` — square/icon mark for light backgrounds.
|
|
194
|
+
- `mark_dark` — square/icon mark for dark backgrounds.
|
|
195
|
+
|
|
196
|
+
Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
|
|
197
|
+
:param search_keys_type: Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
|
|
198
|
+
- `firm_id` — the value is a firm/company internal ID.
|
|
199
|
+
- `firm` — the value is the firm/company name.
|
|
200
|
+
:param composite_auto: Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo.
|
|
201
|
+
:param composite_radius: Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style.
|
|
202
|
+
:param scale: Image scale for returned logo URLs. Use higher scale values for high-density displays.
|
|
203
|
+
:param retries: Override the default retry configuration for this method
|
|
204
|
+
:param server_url: Override the default server URL for this method
|
|
205
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
206
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
207
|
+
"""
|
|
208
|
+
base_url = None
|
|
209
|
+
url_variables = None
|
|
210
|
+
if timeout_ms is None:
|
|
211
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
212
|
+
|
|
213
|
+
if timeout_ms is None:
|
|
214
|
+
timeout_ms = 30000
|
|
215
|
+
|
|
216
|
+
if server_url is not None:
|
|
217
|
+
base_url = server_url
|
|
218
|
+
else:
|
|
219
|
+
base_url = self._get_url(base_url, url_variables)
|
|
220
|
+
|
|
221
|
+
request = models.SearchLogosRequest(
|
|
222
|
+
search_keys=search_keys,
|
|
223
|
+
search_keys_type=search_keys_type,
|
|
224
|
+
fields=fields,
|
|
225
|
+
composite_auto=composite_auto,
|
|
226
|
+
composite_radius=composite_radius,
|
|
227
|
+
scale=scale,
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
req = self._build_request_async(
|
|
231
|
+
method="GET",
|
|
232
|
+
path="/v1/logos/search",
|
|
233
|
+
base_url=base_url,
|
|
234
|
+
url_variables=url_variables,
|
|
235
|
+
request=request,
|
|
236
|
+
request_body_required=False,
|
|
237
|
+
request_has_path_params=False,
|
|
238
|
+
request_has_query_params=True,
|
|
239
|
+
user_agent_header="user-agent",
|
|
240
|
+
accept_header_value="application/json",
|
|
241
|
+
http_headers=http_headers,
|
|
242
|
+
security=self.sdk_configuration.security,
|
|
243
|
+
allow_empty_value=None,
|
|
244
|
+
allowed_fields=["client_id"],
|
|
245
|
+
timeout_ms=timeout_ms,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
if retries == UNSET:
|
|
249
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
250
|
+
retries = self.sdk_configuration.retry_config
|
|
251
|
+
else:
|
|
252
|
+
retries = utils.RetryConfig(
|
|
253
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
retry_config = None
|
|
257
|
+
if isinstance(retries, utils.RetryConfig):
|
|
258
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
259
|
+
|
|
260
|
+
http_res = await self.do_request_async(
|
|
261
|
+
hook_ctx=HookContext(
|
|
262
|
+
config=self.sdk_configuration,
|
|
263
|
+
base_url=base_url or "",
|
|
264
|
+
operation_id="searchLogos",
|
|
265
|
+
oauth2_scopes=["market:supplemental"],
|
|
266
|
+
security_source=self.sdk_configuration.security,
|
|
267
|
+
tags=["Logos"],
|
|
268
|
+
extensions=None,
|
|
269
|
+
),
|
|
270
|
+
request=req,
|
|
271
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
272
|
+
retry_config=retry_config,
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
response_data: Any = None
|
|
276
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
277
|
+
return models.SearchLogosResponse(
|
|
278
|
+
logo_search_response=unmarshal_json_response(
|
|
279
|
+
Optional[models.LogoSearchResponse], http_res
|
|
280
|
+
),
|
|
281
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
282
|
+
)
|
|
283
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
284
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
285
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
286
|
+
request=req, response=http_res
|
|
287
|
+
)
|
|
288
|
+
raise errors.BadRequest(response_data, http_res)
|
|
289
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
290
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
291
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
292
|
+
request=req, response=http_res
|
|
293
|
+
)
|
|
294
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
295
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
296
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
297
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
298
|
+
request=req, response=http_res
|
|
299
|
+
)
|
|
300
|
+
raise errors.Forbidden(response_data, http_res)
|
|
301
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
302
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
303
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
304
|
+
request=req, response=http_res
|
|
305
|
+
)
|
|
306
|
+
raise errors.NotFound(response_data, http_res)
|
|
307
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
308
|
+
response_data = unmarshal_json_response(
|
|
309
|
+
errors.InternalServerErrorUnion, http_res
|
|
310
|
+
)
|
|
311
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
312
|
+
request=req, response=http_res
|
|
313
|
+
)
|
|
314
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
315
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
316
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
317
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
318
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
319
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
320
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
321
|
+
|
|
322
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
323
|
+
|
|
324
|
+
def sync_logos(
|
|
325
|
+
self,
|
|
326
|
+
*,
|
|
327
|
+
fields: str,
|
|
328
|
+
updated_since: Optional[int] = None,
|
|
329
|
+
composite_auto: Optional[bool] = False,
|
|
330
|
+
composite_radius: Optional[int] = None,
|
|
331
|
+
scale: Optional[str] = None,
|
|
332
|
+
page: Optional[int] = None,
|
|
333
|
+
page_size: Optional[int] = None,
|
|
334
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
335
|
+
server_url: Optional[str] = None,
|
|
336
|
+
timeout_ms: Optional[int] = None,
|
|
337
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
338
|
+
) -> Optional[models.SyncLogosResponse]:
|
|
339
|
+
r"""Sync Company Logos
|
|
340
|
+
|
|
341
|
+
Synchronize and retrieve the latest company logos ensuring brand assets are up-to-date across all platforms.
|
|
342
|
+
|
|
343
|
+
If set, this operation will use `client_id` from the global security.
|
|
344
|
+
|
|
345
|
+
:param fields: Comma-separated list of logo asset fields to return. Common values:
|
|
346
|
+
- `logo_light` — full logo for light backgrounds.
|
|
347
|
+
- `logo_dark` — full logo for dark backgrounds.
|
|
348
|
+
- `mark_light` — square/icon mark for light backgrounds.
|
|
349
|
+
- `mark_dark` — square/icon mark for dark backgrounds.
|
|
350
|
+
|
|
351
|
+
Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
|
|
352
|
+
:param updated_since: Only return logos updated since this Unix timestamp
|
|
353
|
+
:param composite_auto: Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo.
|
|
354
|
+
:param composite_radius: Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style.
|
|
355
|
+
:param scale: Image scale for returned logo URLs. Use higher scale values for high-density displays.
|
|
356
|
+
:param page: Zero-based page offset. Enter 0 for the first page of results.
|
|
357
|
+
:param page_size: Number of results per page. Use this to control pagination size in list views. (1-1000)
|
|
358
|
+
:param retries: Override the default retry configuration for this method
|
|
359
|
+
:param server_url: Override the default server URL for this method
|
|
360
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
361
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
362
|
+
"""
|
|
363
|
+
base_url = None
|
|
364
|
+
url_variables = None
|
|
365
|
+
if timeout_ms is None:
|
|
366
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
367
|
+
|
|
368
|
+
if timeout_ms is None:
|
|
369
|
+
timeout_ms = 30000
|
|
370
|
+
|
|
371
|
+
if server_url is not None:
|
|
372
|
+
base_url = server_url
|
|
373
|
+
else:
|
|
374
|
+
base_url = self._get_url(base_url, url_variables)
|
|
375
|
+
|
|
376
|
+
request = models.SyncLogosRequest(
|
|
377
|
+
fields=fields,
|
|
378
|
+
updated_since=updated_since,
|
|
379
|
+
composite_auto=composite_auto,
|
|
380
|
+
composite_radius=composite_radius,
|
|
381
|
+
scale=scale,
|
|
382
|
+
page=page,
|
|
383
|
+
page_size=page_size,
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
req = self._build_request(
|
|
387
|
+
method="GET",
|
|
388
|
+
path="/v1/logos/sync",
|
|
389
|
+
base_url=base_url,
|
|
390
|
+
url_variables=url_variables,
|
|
391
|
+
request=request,
|
|
392
|
+
request_body_required=False,
|
|
393
|
+
request_has_path_params=False,
|
|
394
|
+
request_has_query_params=True,
|
|
395
|
+
user_agent_header="user-agent",
|
|
396
|
+
accept_header_value="application/json",
|
|
397
|
+
http_headers=http_headers,
|
|
398
|
+
security=self.sdk_configuration.security,
|
|
399
|
+
allow_empty_value=None,
|
|
400
|
+
allowed_fields=["client_id"],
|
|
401
|
+
timeout_ms=timeout_ms,
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
if retries == UNSET:
|
|
405
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
406
|
+
retries = self.sdk_configuration.retry_config
|
|
407
|
+
else:
|
|
408
|
+
retries = utils.RetryConfig(
|
|
409
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
retry_config = None
|
|
413
|
+
if isinstance(retries, utils.RetryConfig):
|
|
414
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
415
|
+
|
|
416
|
+
http_res = self.do_request(
|
|
417
|
+
hook_ctx=HookContext(
|
|
418
|
+
config=self.sdk_configuration,
|
|
419
|
+
base_url=base_url or "",
|
|
420
|
+
operation_id="syncLogos",
|
|
421
|
+
oauth2_scopes=["market:supplemental"],
|
|
422
|
+
security_source=self.sdk_configuration.security,
|
|
423
|
+
tags=["Logos"],
|
|
424
|
+
extensions=None,
|
|
425
|
+
),
|
|
426
|
+
request=req,
|
|
427
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
428
|
+
retry_config=retry_config,
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
def next_func() -> Optional[models.SyncLogosResponse]:
|
|
432
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
433
|
+
page = request.page if isinstance(request.page, int) else 1
|
|
434
|
+
next_page = page + 1
|
|
435
|
+
|
|
436
|
+
if not http_res.text:
|
|
437
|
+
return None
|
|
438
|
+
results = JSONPath("$.data").parse(body)
|
|
439
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
440
|
+
return None
|
|
441
|
+
limit_ = request.page_size if isinstance(request.page_size, int) else 0
|
|
442
|
+
if len(results[0]) < limit_:
|
|
443
|
+
return None
|
|
444
|
+
|
|
445
|
+
return self.sync_logos(
|
|
446
|
+
fields=fields,
|
|
447
|
+
updated_since=updated_since,
|
|
448
|
+
composite_auto=composite_auto,
|
|
449
|
+
composite_radius=composite_radius,
|
|
450
|
+
scale=scale,
|
|
451
|
+
page=next_page,
|
|
452
|
+
page_size=page_size,
|
|
453
|
+
retries=retries,
|
|
454
|
+
server_url=server_url,
|
|
455
|
+
timeout_ms=timeout_ms,
|
|
456
|
+
http_headers=http_headers,
|
|
457
|
+
)
|
|
458
|
+
|
|
459
|
+
response_data: Any = None
|
|
460
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
461
|
+
return models.SyncLogosResponse(
|
|
462
|
+
logo_sync_response=unmarshal_json_response(
|
|
463
|
+
Optional[models.LogoSyncResponse], http_res
|
|
464
|
+
),
|
|
465
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
466
|
+
next=next_func,
|
|
467
|
+
)
|
|
468
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
469
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
470
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
471
|
+
request=req, response=http_res
|
|
472
|
+
)
|
|
473
|
+
raise errors.BadRequest(response_data, http_res)
|
|
474
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
475
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
476
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
477
|
+
request=req, response=http_res
|
|
478
|
+
)
|
|
479
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
480
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
481
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
482
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
483
|
+
request=req, response=http_res
|
|
484
|
+
)
|
|
485
|
+
raise errors.Forbidden(response_data, http_res)
|
|
486
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
487
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
488
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
489
|
+
request=req, response=http_res
|
|
490
|
+
)
|
|
491
|
+
raise errors.NotFound(response_data, http_res)
|
|
492
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
493
|
+
response_data = unmarshal_json_response(
|
|
494
|
+
errors.InternalServerErrorUnion, http_res
|
|
495
|
+
)
|
|
496
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
497
|
+
request=req, response=http_res
|
|
498
|
+
)
|
|
499
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
500
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
501
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
502
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
503
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
504
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
505
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
506
|
+
|
|
507
|
+
raise errors.APIError("Unexpected response received", http_res)
|
|
508
|
+
|
|
509
|
+
async def sync_logos_async(
|
|
510
|
+
self,
|
|
511
|
+
*,
|
|
512
|
+
fields: str,
|
|
513
|
+
updated_since: Optional[int] = None,
|
|
514
|
+
composite_auto: Optional[bool] = False,
|
|
515
|
+
composite_radius: Optional[int] = None,
|
|
516
|
+
scale: Optional[str] = None,
|
|
517
|
+
page: Optional[int] = None,
|
|
518
|
+
page_size: Optional[int] = None,
|
|
519
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
520
|
+
server_url: Optional[str] = None,
|
|
521
|
+
timeout_ms: Optional[int] = None,
|
|
522
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
523
|
+
) -> Optional[models.SyncLogosResponse]:
|
|
524
|
+
r"""Sync Company Logos
|
|
525
|
+
|
|
526
|
+
Synchronize and retrieve the latest company logos ensuring brand assets are up-to-date across all platforms.
|
|
527
|
+
|
|
528
|
+
If set, this operation will use `client_id` from the global security.
|
|
529
|
+
|
|
530
|
+
:param fields: Comma-separated list of logo asset fields to return. Common values:
|
|
531
|
+
- `logo_light` — full logo for light backgrounds.
|
|
532
|
+
- `logo_dark` — full logo for dark backgrounds.
|
|
533
|
+
- `mark_light` — square/icon mark for light backgrounds.
|
|
534
|
+
- `mark_dark` — square/icon mark for dark backgrounds.
|
|
535
|
+
|
|
536
|
+
Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
|
|
537
|
+
:param updated_since: Only return logos updated since this Unix timestamp
|
|
538
|
+
:param composite_auto: Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo.
|
|
539
|
+
:param composite_radius: Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style.
|
|
540
|
+
:param scale: Image scale for returned logo URLs. Use higher scale values for high-density displays.
|
|
541
|
+
:param page: Zero-based page offset. Enter 0 for the first page of results.
|
|
542
|
+
:param page_size: Number of results per page. Use this to control pagination size in list views. (1-1000)
|
|
543
|
+
:param retries: Override the default retry configuration for this method
|
|
544
|
+
:param server_url: Override the default server URL for this method
|
|
545
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
546
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
547
|
+
"""
|
|
548
|
+
base_url = None
|
|
549
|
+
url_variables = None
|
|
550
|
+
if timeout_ms is None:
|
|
551
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
552
|
+
|
|
553
|
+
if timeout_ms is None:
|
|
554
|
+
timeout_ms = 30000
|
|
555
|
+
|
|
556
|
+
if server_url is not None:
|
|
557
|
+
base_url = server_url
|
|
558
|
+
else:
|
|
559
|
+
base_url = self._get_url(base_url, url_variables)
|
|
560
|
+
|
|
561
|
+
request = models.SyncLogosRequest(
|
|
562
|
+
fields=fields,
|
|
563
|
+
updated_since=updated_since,
|
|
564
|
+
composite_auto=composite_auto,
|
|
565
|
+
composite_radius=composite_radius,
|
|
566
|
+
scale=scale,
|
|
567
|
+
page=page,
|
|
568
|
+
page_size=page_size,
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
req = self._build_request_async(
|
|
572
|
+
method="GET",
|
|
573
|
+
path="/v1/logos/sync",
|
|
574
|
+
base_url=base_url,
|
|
575
|
+
url_variables=url_variables,
|
|
576
|
+
request=request,
|
|
577
|
+
request_body_required=False,
|
|
578
|
+
request_has_path_params=False,
|
|
579
|
+
request_has_query_params=True,
|
|
580
|
+
user_agent_header="user-agent",
|
|
581
|
+
accept_header_value="application/json",
|
|
582
|
+
http_headers=http_headers,
|
|
583
|
+
security=self.sdk_configuration.security,
|
|
584
|
+
allow_empty_value=None,
|
|
585
|
+
allowed_fields=["client_id"],
|
|
586
|
+
timeout_ms=timeout_ms,
|
|
587
|
+
)
|
|
588
|
+
|
|
589
|
+
if retries == UNSET:
|
|
590
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
591
|
+
retries = self.sdk_configuration.retry_config
|
|
592
|
+
else:
|
|
593
|
+
retries = utils.RetryConfig(
|
|
594
|
+
"backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
|
|
595
|
+
)
|
|
596
|
+
|
|
597
|
+
retry_config = None
|
|
598
|
+
if isinstance(retries, utils.RetryConfig):
|
|
599
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
600
|
+
|
|
601
|
+
http_res = await self.do_request_async(
|
|
602
|
+
hook_ctx=HookContext(
|
|
603
|
+
config=self.sdk_configuration,
|
|
604
|
+
base_url=base_url or "",
|
|
605
|
+
operation_id="syncLogos",
|
|
606
|
+
oauth2_scopes=["market:supplemental"],
|
|
607
|
+
security_source=self.sdk_configuration.security,
|
|
608
|
+
tags=["Logos"],
|
|
609
|
+
extensions=None,
|
|
610
|
+
),
|
|
611
|
+
request=req,
|
|
612
|
+
is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
|
|
613
|
+
retry_config=retry_config,
|
|
614
|
+
)
|
|
615
|
+
|
|
616
|
+
def next_func() -> Optional[models.SyncLogosResponse]:
|
|
617
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
618
|
+
page = request.page if isinstance(request.page, int) else 1
|
|
619
|
+
next_page = page + 1
|
|
620
|
+
|
|
621
|
+
if not http_res.text:
|
|
622
|
+
return None
|
|
623
|
+
results = JSONPath("$.data").parse(body)
|
|
624
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
625
|
+
return None
|
|
626
|
+
limit_ = request.page_size if isinstance(request.page_size, int) else 0
|
|
627
|
+
if len(results[0]) < limit_:
|
|
628
|
+
return None
|
|
629
|
+
|
|
630
|
+
return self.sync_logos(
|
|
631
|
+
fields=fields,
|
|
632
|
+
updated_since=updated_since,
|
|
633
|
+
composite_auto=composite_auto,
|
|
634
|
+
composite_radius=composite_radius,
|
|
635
|
+
scale=scale,
|
|
636
|
+
page=next_page,
|
|
637
|
+
page_size=page_size,
|
|
638
|
+
retries=retries,
|
|
639
|
+
server_url=server_url,
|
|
640
|
+
timeout_ms=timeout_ms,
|
|
641
|
+
http_headers=http_headers,
|
|
642
|
+
)
|
|
643
|
+
|
|
644
|
+
response_data: Any = None
|
|
645
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
646
|
+
return models.SyncLogosResponse(
|
|
647
|
+
logo_sync_response=unmarshal_json_response(
|
|
648
|
+
Optional[models.LogoSyncResponse], http_res
|
|
649
|
+
),
|
|
650
|
+
http_meta=models.HTTPMetadata(request=req, response=http_res),
|
|
651
|
+
next=next_func,
|
|
652
|
+
)
|
|
653
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
654
|
+
response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
|
|
655
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
656
|
+
request=req, response=http_res
|
|
657
|
+
)
|
|
658
|
+
raise errors.BadRequest(response_data, http_res)
|
|
659
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
660
|
+
response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
|
|
661
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
662
|
+
request=req, response=http_res
|
|
663
|
+
)
|
|
664
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
665
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
666
|
+
response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
|
|
667
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
668
|
+
request=req, response=http_res
|
|
669
|
+
)
|
|
670
|
+
raise errors.Forbidden(response_data, http_res)
|
|
671
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
672
|
+
response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
|
|
673
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
674
|
+
request=req, response=http_res
|
|
675
|
+
)
|
|
676
|
+
raise errors.NotFound(response_data, http_res)
|
|
677
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
678
|
+
response_data = unmarshal_json_response(
|
|
679
|
+
errors.InternalServerErrorUnion, http_res
|
|
680
|
+
)
|
|
681
|
+
response_data.http_meta = models.HTTPMetadata(
|
|
682
|
+
request=req, response=http_res
|
|
683
|
+
)
|
|
684
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
685
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
686
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
687
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
688
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
689
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
690
|
+
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
691
|
+
|
|
692
|
+
raise errors.APIError("Unexpected response received", http_res)
|