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.
Files changed (486) hide show
  1. finance_dev/__init__.py +18 -0
  2. finance_dev/_hooks/__init__.py +7 -0
  3. finance_dev/_hooks/clientcredentials.py +319 -0
  4. finance_dev/_hooks/oauth2scopes.py +50 -0
  5. finance_dev/_hooks/registration.py +13 -0
  6. finance_dev/_hooks/sdkhooks.py +82 -0
  7. finance_dev/_hooks/types.py +125 -0
  8. finance_dev/_version.py +16 -0
  9. finance_dev/accounts.py +797 -0
  10. finance_dev/alternativedata.py +4830 -0
  11. finance_dev/analytics.py +3757 -0
  12. finance_dev/basesdk.py +393 -0
  13. finance_dev/calendar.py +1523 -0
  14. finance_dev/chart.py +1881 -0
  15. finance_dev/company.py +1105 -0
  16. finance_dev/corporateactions.py +1795 -0
  17. finance_dev/economy.py +1153 -0
  18. finance_dev/errors/__init__.py +94 -0
  19. finance_dev/errors/apierror.py +41 -0
  20. finance_dev/errors/authenticationerrorenvelope.py +43 -0
  21. finance_dev/errors/badrequest.py +34 -0
  22. finance_dev/errors/errorenvelope.py +42 -0
  23. finance_dev/errors/errorresponse.py +45 -0
  24. finance_dev/errors/financedevapierror.py +31 -0
  25. finance_dev/errors/forbidden.py +34 -0
  26. finance_dev/errors/internalservererror.py +35 -0
  27. finance_dev/errors/no_response_error.py +18 -0
  28. finance_dev/errors/notfound.py +34 -0
  29. finance_dev/errors/orderhistorybadrequest.py +35 -0
  30. finance_dev/errors/predorderserrorenvelope.py +42 -0
  31. finance_dev/errors/responsevalidationerror.py +28 -0
  32. finance_dev/errors/unauthorized.py +34 -0
  33. finance_dev/estimates.py +1906 -0
  34. finance_dev/etf.py +1108 -0
  35. finance_dev/filings.py +586 -0
  36. finance_dev/financials.py +4079 -0
  37. finance_dev/history.py +477 -0
  38. finance_dev/httpclient.py +126 -0
  39. finance_dev/indices.py +2308 -0
  40. finance_dev/logos.py +692 -0
  41. finance_dev/market.py +1825 -0
  42. finance_dev/markets.py +952 -0
  43. finance_dev/models/__init__.py +4568 -0
  44. finance_dev/models/accountbalancev2.py +340 -0
  45. finance_dev/models/accountitem.py +78 -0
  46. finance_dev/models/accountposition.py +147 -0
  47. finance_dev/models/aggregatetechnicalindicatorsresponse.py +192 -0
  48. finance_dev/models/analystinsightitem.py +161 -0
  49. finance_dev/models/analystinsightsresponse.py +39 -0
  50. finance_dev/models/apperror.py +123 -0
  51. finance_dev/models/authenticationerrordetail.py +58 -0
  52. finance_dev/models/bankbranchesresponse.py +96 -0
  53. finance_dev/models/basicfinancials.py +243 -0
  54. finance_dev/models/bullbearanalysisresponse.py +150 -0
  55. finance_dev/models/cancelorderop.py +40 -0
  56. finance_dev/models/cancelordrequest_union.py +287 -0
  57. finance_dev/models/cancelordresponse.py +115 -0
  58. finance_dev/models/cashflowstatement.py +290 -0
  59. finance_dev/models/cashflowstatementsresponse.py +61 -0
  60. finance_dev/models/chartbars.py +111 -0
  61. finance_dev/models/chartconfig.py +81 -0
  62. finance_dev/models/chartresolution.py +46 -0
  63. finance_dev/models/companyesgresponse.py +408 -0
  64. finance_dev/models/companyexecutive.py +70 -0
  65. finance_dev/models/companyexecutiveresponse.py +39 -0
  66. finance_dev/models/companypeersresponse.py +38 -0
  67. finance_dev/models/companypresentationresponse.py +96 -0
  68. finance_dev/models/companyprofile.py +255 -0
  69. finance_dev/models/conferencecallsresponse.py +169 -0
  70. finance_dev/models/congressionaltradingresponse.py +138 -0
  71. finance_dev/models/covid19uscasesresponse.py +79 -0
  72. finance_dev/models/createconfigwatchlistop.py +40 -0
  73. finance_dev/models/createwatchlistrequest.py +43 -0
  74. finance_dev/models/dailymarketsummaryresponse.py +73 -0
  75. finance_dev/models/deleteconfigwatchlistbyidop.py +53 -0
  76. finance_dev/models/dividenditem.py +125 -0
  77. finance_dev/models/dividendsresponse.py +61 -0
  78. finance_dev/models/earningrelease.py +291 -0
  79. finance_dev/models/earningscallliveresponse.py +103 -0
  80. finance_dev/models/earningsqualityscoreresponse.py +140 -0
  81. finance_dev/models/earningssurprisesresponse.py +125 -0
  82. finance_dev/models/ebitdaestimatesresponse.py +176 -0
  83. finance_dev/models/ebitestimatesresponse.py +176 -0
  84. finance_dev/models/economicscalendarevent.py +160 -0
  85. finance_dev/models/economicsindicator.py +87 -0
  86. finance_dev/models/epsestimatesresponse.py +176 -0
  87. finance_dev/models/equitydetailsdto.py +569 -0
  88. finance_dev/models/errorcode.py +48 -0
  89. finance_dev/models/etblistresponse.py +43 -0
  90. finance_dev/models/etbsearchrequest.py +21 -0
  91. finance_dev/models/etbsearchresponse.py +43 -0
  92. finance_dev/models/etfcountryallocationresponse.py +113 -0
  93. finance_dev/models/etfholdingsresponse.py +163 -0
  94. finance_dev/models/etfprofileresponse.py +234 -0
  95. finance_dev/models/etfsectorallocationresponse.py +113 -0
  96. finance_dev/models/exchangecode.py +90 -0
  97. finance_dev/models/fdaadvisorycommitteecalendarresponse.py +88 -0
  98. finance_dev/models/filingsimilarityrecord.py +115 -0
  99. finance_dev/models/filingssimilarityindexdatawrapper.py +52 -0
  100. finance_dev/models/filingssimilarityindexresponse.py +42 -0
  101. finance_dev/models/financialratiosresponse.py +252 -0
  102. finance_dev/models/financialsreporteddatawrapper.py +49 -0
  103. finance_dev/models/financialsreportedresponse.py +42 -0
  104. finance_dev/models/financialsrevenuebreakdowndatawrapper.py +49 -0
  105. finance_dev/models/financialsrevenuebreakdownresponse.py +42 -0
  106. finance_dev/models/financialsstatementsdatawrapper.py +44 -0
  107. finance_dev/models/financialsstatementsresponse.py +42 -0
  108. finance_dev/models/financialstatement.py +171 -0
  109. finance_dev/models/financialstatementtype.py +14 -0
  110. finance_dev/models/getaccountbalanceop.py +53 -0
  111. finance_dev/models/getaccountpositionsop.py +53 -0
  112. finance_dev/models/getaccountsresponse.py +22 -0
  113. finance_dev/models/getaggregatetechnicalindicatorsop.py +94 -0
  114. finance_dev/models/getanalystinsightsop.py +164 -0
  115. finance_dev/models/getbankbranchesop.py +53 -0
  116. finance_dev/models/getbaseeventop.py +87 -0
  117. finance_dev/models/getbullbearanalysisop.py +91 -0
  118. finance_dev/models/getcashflowstatementsop.py +564 -0
  119. finance_dev/models/getchartconfigop.py +40 -0
  120. finance_dev/models/getcharthistoryop.py +122 -0
  121. finance_dev/models/getcharttimeop.py +39 -0
  122. finance_dev/models/getcompanyesgop.py +53 -0
  123. finance_dev/models/getcompanyexecutivesop.py +56 -0
  124. finance_dev/models/getcompanymetricsop.py +68 -0
  125. finance_dev/models/getcompanypeersop.py +53 -0
  126. finance_dev/models/getcompanypresentationop.py +56 -0
  127. finance_dev/models/getcompanyprofileop.py +86 -0
  128. finance_dev/models/getconferencecallsop.py +111 -0
  129. finance_dev/models/getconfigwatchlistbyidop.py +53 -0
  130. finance_dev/models/getconfigwatchlistsop.py +40 -0
  131. finance_dev/models/getcongressionaltradingop.py +73 -0
  132. finance_dev/models/getcovid19uscasesop.py +43 -0
  133. finance_dev/models/getdailymarketsummaryop.py +92 -0
  134. finance_dev/models/getdividendsop.py +294 -0
  135. finance_dev/models/getearningscalendarop.py +87 -0
  136. finance_dev/models/getearningscallliveop.py +91 -0
  137. finance_dev/models/getearningsqualityscoreop.py +81 -0
  138. finance_dev/models/getearningssurprisesop.py +80 -0
  139. finance_dev/models/getebitdaestimatesop.py +91 -0
  140. finance_dev/models/getebitestimatesop.py +88 -0
  141. finance_dev/models/geteconomicscalendarop.py +92 -0
  142. finance_dev/models/geteconomicscalendarresponse.py +56 -0
  143. finance_dev/models/getepsestimatesop.py +88 -0
  144. finance_dev/models/getequitydetailsop.py +56 -0
  145. finance_dev/models/getequitydetailsresponse.py +45 -0
  146. finance_dev/models/getetblistop.py +40 -0
  147. finance_dev/models/getetfcountryallocationop.py +80 -0
  148. finance_dev/models/getetfholdingsop.py +96 -0
  149. finance_dev/models/getetfprofileop.py +77 -0
  150. finance_dev/models/getetfsectorallocationop.py +80 -0
  151. finance_dev/models/geteventcontractsop.py +87 -0
  152. finance_dev/models/getfdaadvisorycommitteecalendarop.py +47 -0
  153. finance_dev/models/getfilingssimilarityindexop.py +102 -0
  154. finance_dev/models/getfinancialratiosop.py +612 -0
  155. finance_dev/models/getfinancialstatementsop.py +117 -0
  156. finance_dev/models/getfundownershipop.py +77 -0
  157. finance_dev/models/gethistoricaldataop.py +61 -0
  158. finance_dev/models/gethistoricalesgop.py +53 -0
  159. finance_dev/models/gethistorybatchop.py +74 -0
  160. finance_dev/models/gethistoryop.py +123 -0
  161. finance_dev/models/getincomestatementsop.py +564 -0
  162. finance_dev/models/getindexbarop.py +140 -0
  163. finance_dev/models/getindexbarsop.py +149 -0
  164. finance_dev/models/getindexchartbarsop.py +178 -0
  165. finance_dev/models/getindexrealtimevaluesop.py +94 -0
  166. finance_dev/models/getinflationexpectationsop.py +157 -0
  167. finance_dev/models/getinflationop.py +154 -0
  168. finance_dev/models/getinsidertransactionsop.py +90 -0
  169. finance_dev/models/getinstitutionalownershipop.py +99 -0
  170. finance_dev/models/getinstitutionalportfolioop.py +75 -0
  171. finance_dev/models/getinvestmentthemeop.py +68 -0
  172. finance_dev/models/getipocalendarop.py +63 -0
  173. finance_dev/models/getlobbyingop.py +70 -0
  174. finance_dev/models/getmarketbreadthop.py +40 -0
  175. finance_dev/models/getmarketholidaysop.py +65 -0
  176. finance_dev/models/getmarketstatusop.py +65 -0
  177. finance_dev/models/getmergersandacquisitionsop.py +113 -0
  178. finance_dev/models/getnetinflowop.py +40 -0
  179. finance_dev/models/getnewsbyidop.py +73 -0
  180. finance_dev/models/getnewsop.py +98 -0
  181. finance_dev/models/getnewssentimentop.py +53 -0
  182. finance_dev/models/getoptionchainsnapshotop.py +244 -0
  183. finance_dev/models/getoptioncontractsnapshotop.py +69 -0
  184. finance_dev/models/getoptiondetailsop.py +56 -0
  185. finance_dev/models/getoptiondetailsresponse.py +45 -0
  186. finance_dev/models/getoptionlasttradeop.py +56 -0
  187. finance_dev/models/getoptionopencloseop.py +66 -0
  188. finance_dev/models/getoptionpreviousdayop.py +56 -0
  189. finance_dev/models/getoptionquotesop.py +177 -0
  190. finance_dev/models/getoptionsactivityop.py +111 -0
  191. finance_dev/models/getoptionsetfstopvolumeop.py +70 -0
  192. finance_dev/models/getoptionsstockstopgainersop.py +70 -0
  193. finance_dev/models/getoptionsstockstopvolumeop.py +70 -0
  194. finance_dev/models/getoptionsunusualactivityop.py +100 -0
  195. finance_dev/models/getoptiontradesop.py +177 -0
  196. finance_dev/models/getordersv2response.py +66 -0
  197. finance_dev/models/getownershipdataop.py +77 -0
  198. finance_dev/models/getpositionsresponse.py +39 -0
  199. finance_dev/models/getpredictionorderop.py +88 -0
  200. finance_dev/models/getpricetargetop.py +53 -0
  201. finance_dev/models/getquotesop.py +53 -0
  202. finance_dev/models/getratingsop.py +164 -0
  203. finance_dev/models/getratingsresponse.py +39 -0
  204. finance_dev/models/getreportedfinancialsop.py +127 -0
  205. finance_dev/models/getrevenuebreakdownop.py +85 -0
  206. finance_dev/models/getrevenueestimatesop.py +91 -0
  207. finance_dev/models/getsecfilingsop.py +113 -0
  208. finance_dev/models/getsectortickersop.py +124 -0
  209. finance_dev/models/getsectorwisechangeop.py +84 -0
  210. finance_dev/models/getshortinterestop.py +334 -0
  211. finance_dev/models/getshortvolumeop.py +333 -0
  212. finance_dev/models/getsocialsentimentop.py +90 -0
  213. finance_dev/models/getspinoffsop.py +112 -0
  214. finance_dev/models/getstockaggregatesop.py +174 -0
  215. finance_dev/models/getstocklastquoteop.py +56 -0
  216. finance_dev/models/getstocklasttradeop.py +56 -0
  217. finance_dev/models/getstockopencloseop.py +90 -0
  218. finance_dev/models/getstockpreviousdayop.py +80 -0
  219. finance_dev/models/getstockquotesop.py +177 -0
  220. finance_dev/models/getstocksnapshotsop.py +82 -0
  221. finance_dev/models/getstocksplitsop.py +243 -0
  222. finance_dev/models/getstocktradesop.py +177 -0
  223. finance_dev/models/getsupplychainop.py +53 -0
  224. finance_dev/models/getsupportresistancelevelsop.py +90 -0
  225. finance_dev/models/getsymbolinfoop.py +53 -0
  226. finance_dev/models/gettechnicalindicatorop.py +172 -0
  227. finance_dev/models/gettechnicalpatternsop.py +88 -0
  228. finance_dev/models/gettenderoffersop.py +112 -0
  229. finance_dev/models/gettickhistoryop.py +104 -0
  230. finance_dev/models/gettopgainersop.py +78 -0
  231. finance_dev/models/gettoplosersop.py +78 -0
  232. finance_dev/models/gettopmostactiveop.py +78 -0
  233. finance_dev/models/gettranscriptop.py +53 -0
  234. finance_dev/models/gettreasuryyieldsop.py +157 -0
  235. finance_dev/models/getunifiedsnapshotop.py +223 -0
  236. finance_dev/models/getupgradesdowngradesop.py +91 -0
  237. finance_dev/models/getusaspendingop.py +70 -0
  238. finance_dev/models/getuseraccountsop.py +40 -0
  239. finance_dev/models/getusptopatentsop.py +70 -0
  240. finance_dev/models/getvisaapplicationsop.py +73 -0
  241. finance_dev/models/historicalesgresponse.py +439 -0
  242. finance_dev/models/httpmetadata.py +24 -0
  243. finance_dev/models/incomestatement.py +296 -0
  244. finance_dev/models/incomestatementsresponse.py +61 -0
  245. finance_dev/models/indexbarresponse.py +194 -0
  246. finance_dev/models/indexbarsresponse.py +123 -0
  247. finance_dev/models/indexchartbarsresponse.py +213 -0
  248. finance_dev/models/indexgroupsresponse.py +78 -0
  249. finance_dev/models/indexlistresponse.py +95 -0
  250. finance_dev/models/indexsearchresponse.py +93 -0
  251. finance_dev/models/indicesbygroupresponse.py +93 -0
  252. finance_dev/models/indicesidentifiertype.py +28 -0
  253. finance_dev/models/indicesrealtimeindexinfo.py +67 -0
  254. finance_dev/models/indicesrealtimeindexvalue.py +157 -0
  255. finance_dev/models/indicesrealtimevaluesitem.py +80 -0
  256. finance_dev/models/indicesrealtimevaluesresponse.py +42 -0
  257. finance_dev/models/inflationexpectationsresponse.py +140 -0
  258. finance_dev/models/inflationresponse.py +132 -0
  259. finance_dev/models/insidertransaction.py +97 -0
  260. finance_dev/models/insidertransactionsresponse.py +39 -0
  261. finance_dev/models/institutionalholding.py +77 -0
  262. finance_dev/models/institutionalownershipresponse.py +39 -0
  263. finance_dev/models/institutionalportfolioresponse.py +39 -0
  264. finance_dev/models/investmentthemeid.py +35 -0
  265. finance_dev/models/investmentthemeresponse.py +80 -0
  266. finance_dev/models/ipocalendarresponse.py +39 -0
  267. finance_dev/models/ipoitem.py +93 -0
  268. finance_dev/models/listactiveordersop.py +87 -0
  269. finance_dev/models/listcategoriesop.py +79 -0
  270. finance_dev/models/listindexgroupsop.py +40 -0
  271. finance_dev/models/listindicesbygroupop.py +58 -0
  272. finance_dev/models/listindicesop.py +91 -0
  273. finance_dev/models/listoptioncontractsop.py +66 -0
  274. finance_dev/models/listoptionexpirydatesop.py +56 -0
  275. finance_dev/models/listorderhistoryop.py +139 -0
  276. finance_dev/models/listpredictionordersop.py +134 -0
  277. finance_dev/models/listtranscriptsop.py +53 -0
  278. finance_dev/models/lobbyingresponse.py +166 -0
  279. finance_dev/models/logosearchresponse.py +152 -0
  280. finance_dev/models/logosyncresponse.py +277 -0
  281. finance_dev/models/marketbreadth.py +97 -0
  282. finance_dev/models/marketbreadthresponse.py +44 -0
  283. finance_dev/models/marketholiday.py +56 -0
  284. finance_dev/models/marketholidayresponse.py +39 -0
  285. finance_dev/models/marketstatus.py +67 -0
  286. finance_dev/models/mergersandacquisitionsresponse.py +186 -0
  287. finance_dev/models/metricseriespoint.py +43 -0
  288. finance_dev/models/netinflow.py +81 -0
  289. finance_dev/models/netinflowresponse.py +44 -0
  290. finance_dev/models/newsitem.py +102 -0
  291. finance_dev/models/newslistresponse.py +128 -0
  292. finance_dev/models/newssentimentresponse.py +176 -0
  293. finance_dev/models/newstypeenum.py +16 -0
  294. finance_dev/models/optionchainsnapshotresponse.py +64 -0
  295. finance_dev/models/optioncontractsnapshotresponse.py +64 -0
  296. finance_dev/models/optioncontractsnapshotrow.py +164 -0
  297. finance_dev/models/optioncontractsresponse.py +131 -0
  298. finance_dev/models/optiondetailsdto.py +72 -0
  299. finance_dev/models/optionexpirydatesresponse.py +53 -0
  300. finance_dev/models/optionlasttraderesponse.py +169 -0
  301. finance_dev/models/optionopencloseresponse.py +97 -0
  302. finance_dev/models/optionpreviousdayresponse.py +89 -0
  303. finance_dev/models/optionquotesresponse.py +138 -0
  304. finance_dev/models/optionsactivityresponse.py +265 -0
  305. finance_dev/models/optionsnapshotcontractdetails.py +85 -0
  306. finance_dev/models/optionsnapshotdaybar.py +107 -0
  307. finance_dev/models/optionsnapshotgreeks.py +67 -0
  308. finance_dev/models/optionsnapshotlastquote.py +116 -0
  309. finance_dev/models/optionsnapshotlasttrade.py +102 -0
  310. finance_dev/models/optionsnapshotunderlying.py +86 -0
  311. finance_dev/models/optionsscreeneritem.py +151 -0
  312. finance_dev/models/optionsunusualactivityresponse.py +62 -0
  313. finance_dev/models/optionsunusualactivitytrade.py +103 -0
  314. finance_dev/models/optiontradesresponse.py +132 -0
  315. finance_dev/models/orderrequesttimeinforceenum.py +29 -0
  316. finance_dev/models/ordersideenum.py +20 -0
  317. finance_dev/models/ordertypeenum.py +20 -0
  318. finance_dev/models/ordleg.py +162 -0
  319. finance_dev/models/ordresponse.py +202 -0
  320. finance_dev/models/ownershipdataresponse.py +39 -0
  321. finance_dev/models/ownershiprecord.py +74 -0
  322. finance_dev/models/placeorderop.py +40 -0
  323. finance_dev/models/placeordrequest_union.py +335 -0
  324. finance_dev/models/placepredictionorderop.py +114 -0
  325. finance_dev/models/predmdbaseevent.py +62 -0
  326. finance_dev/models/predmdbaseeventhit.py +53 -0
  327. finance_dev/models/predmdbaseeventsearchresult.py +46 -0
  328. finance_dev/models/predmdbaseeventwithevents.py +32 -0
  329. finance_dev/models/predmdbatchhistoryrequest.py +16 -0
  330. finance_dev/models/predmdbatchhistoryresponse.py +16 -0
  331. finance_dev/models/predmdcategory.py +48 -0
  332. finance_dev/models/predmdcontract.py +177 -0
  333. finance_dev/models/predmdcontracthit.py +157 -0
  334. finance_dev/models/predmdcontractsearchresult.py +46 -0
  335. finance_dev/models/predmdevent.py +136 -0
  336. finance_dev/models/predmdeventhit.py +73 -0
  337. finance_dev/models/predmdeventsearchresult.py +46 -0
  338. finance_dev/models/predmdeventwithcontracts.py +22 -0
  339. finance_dev/models/predmdhistoryrequest.py +59 -0
  340. finance_dev/models/predmdhistoryresponse.py +53 -0
  341. finance_dev/models/predmdtick.py +53 -0
  342. finance_dev/models/predordersapperror.py +78 -0
  343. finance_dev/models/predordersorder.py +267 -0
  344. finance_dev/models/predordersorderdetail.py +26 -0
  345. finance_dev/models/predordersorderpage.py +45 -0
  346. finance_dev/models/predordersorderreport.py +88 -0
  347. finance_dev/models/predordersplaceorderrequest.py +159 -0
  348. finance_dev/models/previeworderop.py +40 -0
  349. finance_dev/models/previeworderresponse.py +127 -0
  350. finance_dev/models/pricetargetresponse.py +89 -0
  351. finance_dev/models/quotedata.py +49 -0
  352. finance_dev/models/quotesresponse.py +62 -0
  353. finance_dev/models/quotevalues.py +114 -0
  354. finance_dev/models/rating.py +193 -0
  355. finance_dev/models/ratingsaccuracy.py +242 -0
  356. finance_dev/models/replaceconfigwatchlistsop.py +40 -0
  357. finance_dev/models/replaceorderop.py +40 -0
  358. finance_dev/models/replaceordrequest_union.py +367 -0
  359. finance_dev/models/replaceordresponse.py +144 -0
  360. finance_dev/models/reportedbsitem.py +53 -0
  361. finance_dev/models/reportedfiling.py +110 -0
  362. finance_dev/models/reportedreport.py +39 -0
  363. finance_dev/models/reportingfrequency.py +16 -0
  364. finance_dev/models/revenuebreakdownaxis.py +52 -0
  365. finance_dev/models/revenuebreakdowndatapoint.py +58 -0
  366. finance_dev/models/revenuebreakdownentry.py +51 -0
  367. finance_dev/models/revenuebreakdowninner.py +75 -0
  368. finance_dev/models/revenueestimatesresponse.py +176 -0
  369. finance_dev/models/screenclause.py +70 -0
  370. finance_dev/models/screengroup.py +75 -0
  371. finance_dev/models/searchetbsymbolsop.py +40 -0
  372. finance_dev/models/searchindicesop.py +55 -0
  373. finance_dev/models/searchlogosop.py +158 -0
  374. finance_dev/models/searchmarketsymbolsop.py +80 -0
  375. finance_dev/models/searchop.py +232 -0
  376. finance_dev/models/searchsymbolitem.py +76 -0
  377. finance_dev/models/searchsymbolresponseitem.py +71 -0
  378. finance_dev/models/searchsymbolsop.py +77 -0
  379. finance_dev/models/secfiling.py +91 -0
  380. finance_dev/models/secfilingsresponse.py +39 -0
  381. finance_dev/models/sectoravgchange.py +50 -0
  382. finance_dev/models/security.py +59 -0
  383. finance_dev/models/securitytypeenum.py +16 -0
  384. finance_dev/models/shortinterestresponse.py +126 -0
  385. finance_dev/models/shortvolumeresponse.py +198 -0
  386. finance_dev/models/socialsentimentresponse.py +124 -0
  387. finance_dev/models/sortorderenum.py +13 -0
  388. finance_dev/models/spinoffsresponse.py +136 -0
  389. finance_dev/models/stockaggregatesresponse.py +92 -0
  390. finance_dev/models/stocklastquoteresponse.py +175 -0
  391. finance_dev/models/stocklasttraderesponse.py +169 -0
  392. finance_dev/models/stockohlcbar.py +85 -0
  393. finance_dev/models/stockopencloseresponse.py +109 -0
  394. finance_dev/models/stockpreviousdayresponse.py +86 -0
  395. finance_dev/models/stockquotesresponse.py +170 -0
  396. finance_dev/models/stockscreenerop.py +144 -0
  397. finance_dev/models/stockscreenerrequest.py +131 -0
  398. finance_dev/models/stockscreenerresponse.py +197 -0
  399. finance_dev/models/stocksnapshotsresponse.py +454 -0
  400. finance_dev/models/stocksplitsresponse.py +144 -0
  401. finance_dev/models/stocktradesresponse.py +164 -0
  402. finance_dev/models/supplychainresponse.py +158 -0
  403. finance_dev/models/supportresistancelevelsresponse.py +68 -0
  404. finance_dev/models/symboldetails.py +119 -0
  405. finance_dev/models/symbolerror.py +43 -0
  406. finance_dev/models/symbolinfo.py +183 -0
  407. finance_dev/models/synclogosop.py +146 -0
  408. finance_dev/models/technicalindicatorresponse.py +43 -0
  409. finance_dev/models/technicalindicatortype.py +21 -0
  410. finance_dev/models/technicalpatternsresponse.py +249 -0
  411. finance_dev/models/tenderofferidentifiertype.py +26 -0
  412. finance_dev/models/tenderoffersresponse.py +548 -0
  413. finance_dev/models/tickchartbars.py +104 -0
  414. finance_dev/models/tickresolution.py +20 -0
  415. finance_dev/models/timeinforceenum.py +26 -0
  416. finance_dev/models/tradeorderlegv2.py +164 -0
  417. finance_dev/models/tradeorderv2.py +434 -0
  418. finance_dev/models/transcriptresponse.py +162 -0
  419. finance_dev/models/transcriptsresponse.py +89 -0
  420. finance_dev/models/treasuryyieldsresponse.py +160 -0
  421. finance_dev/models/unifiedsnapshotresponse.py +308 -0
  422. finance_dev/models/updateconfigwatchlistbyidop.py +65 -0
  423. finance_dev/models/updatewatchlistrequest_union.py +134 -0
  424. finance_dev/models/upgradesdowngradesresponse.py +98 -0
  425. finance_dev/models/usaspendingresponse.py +222 -0
  426. finance_dev/models/usptopatentsresponse.py +134 -0
  427. finance_dev/models/visaapplicationsresponse.py +228 -0
  428. finance_dev/models/watchlist.py +68 -0
  429. finance_dev/models/watchlistrequest.py +43 -0
  430. finance_dev/models/watchlistresponse.py +44 -0
  431. finance_dev/news_sdk.py +829 -0
  432. finance_dev/options.py +3443 -0
  433. finance_dev/orders.py +1907 -0
  434. finance_dev/ownership.py +1386 -0
  435. finance_dev/predictions.py +29 -0
  436. finance_dev/predictions_orders.py +852 -0
  437. finance_dev/py.typed +1 -0
  438. finance_dev/sdk.py +347 -0
  439. finance_dev/sdkconfiguration.py +50 -0
  440. finance_dev/signals.py +338 -0
  441. finance_dev/stocks.py +3131 -0
  442. finance_dev/technicalanalysis_sdk.py +1137 -0
  443. finance_dev/types/__init__.py +25 -0
  444. finance_dev/types/base64fileinput.py +44 -0
  445. finance_dev/types/basemodel.py +78 -0
  446. finance_dev/utils/__init__.py +181 -0
  447. finance_dev/utils/annotations.py +80 -0
  448. finance_dev/utils/datetimes.py +42 -0
  449. finance_dev/utils/dynamic_imports.py +55 -0
  450. finance_dev/utils/enums.py +135 -0
  451. finance_dev/utils/eventstreaming.py +327 -0
  452. finance_dev/utils/forms.py +240 -0
  453. finance_dev/utils/headers.py +137 -0
  454. finance_dev/utils/logger.py +23 -0
  455. finance_dev/utils/metadata.py +120 -0
  456. finance_dev/utils/queryparams.py +218 -0
  457. finance_dev/utils/requestbodies.py +68 -0
  458. finance_dev/utils/retries.py +373 -0
  459. finance_dev/utils/security.py +199 -0
  460. finance_dev/utils/serializers.py +327 -0
  461. finance_dev/utils/unmarshal_json_response.py +39 -0
  462. finance_dev/utils/url.py +155 -0
  463. finance_dev/utils/values.py +143 -0
  464. finance_dev/watchlist_sdk.py +1583 -0
  465. finance_dev/websocket/__init__.py +57 -0
  466. finance_dev/websocket/account.py +5 -0
  467. finance_dev/websocket/auth.py +124 -0
  468. finance_dev/websocket/chart.py +5 -0
  469. finance_dev/websocket/codec.py +66 -0
  470. finance_dev/websocket/config.py +52 -0
  471. finance_dev/websocket/errors.py +54 -0
  472. finance_dev/websocket/market.py +5 -0
  473. finance_dev/websocket/models/__init__.py +52 -0
  474. finance_dev/websocket/models/account.py +60 -0
  475. finance_dev/websocket/models/chart.py +44 -0
  476. finance_dev/websocket/models/common.py +85 -0
  477. finance_dev/websocket/models/market.py +113 -0
  478. finance_dev/websocket/resources.py +327 -0
  479. finance_dev/websocket/sdk.py +13 -0
  480. finance_dev/websocket/transport/async_connection.py +493 -0
  481. finance_dev/websocket/transport/base.py +78 -0
  482. finance_dev/websocket/transport/sync_connection.py +470 -0
  483. finance_dev-0.9.0.dist-info/METADATA +913 -0
  484. finance_dev-0.9.0.dist-info/RECORD +486 -0
  485. finance_dev-0.9.0.dist-info/WHEEL +5 -0
  486. finance_dev-0.9.0.dist-info/top_level.txt +1 -0
finance_dev/company.py ADDED
@@ -0,0 +1,1105 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 7b42032436a0
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 typing import Any, Mapping, Optional
10
+
11
+
12
+ class Company(BaseSDK):
13
+ def get_company_executives(
14
+ self,
15
+ *,
16
+ symbol: str,
17
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
18
+ server_url: Optional[str] = None,
19
+ timeout_ms: Optional[int] = None,
20
+ http_headers: Optional[Mapping[str, str]] = None,
21
+ ) -> models.GetCompanyExecutivesResponse:
22
+ r"""Get Company Executives
23
+
24
+ Retrieve information about company executives and key management personnel including names, titles, compensation, and tenure.
25
+
26
+ Returns 404 Not Found with error code `NOT_FOUND` when no executive data is available for the specified symbol.
27
+
28
+ If set, this operation will use `client_id` from the global security.
29
+
30
+ :param symbol: Stock ticker symbol to research, such as AAPL.
31
+ :param retries: Override the default retry configuration for this method
32
+ :param server_url: Override the default server URL for this method
33
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
34
+ :param http_headers: Additional headers to set or replace on requests.
35
+ """
36
+ base_url = None
37
+ url_variables = None
38
+ if timeout_ms is None:
39
+ timeout_ms = self.sdk_configuration.timeout_ms
40
+
41
+ if timeout_ms is None:
42
+ timeout_ms = 30000
43
+
44
+ if server_url is not None:
45
+ base_url = server_url
46
+ else:
47
+ base_url = self._get_url(base_url, url_variables)
48
+
49
+ request = models.GetCompanyExecutivesRequest(
50
+ symbol=symbol,
51
+ )
52
+
53
+ req = self._build_request(
54
+ method="GET",
55
+ path="/v1/company/executive",
56
+ base_url=base_url,
57
+ url_variables=url_variables,
58
+ request=request,
59
+ request_body_required=False,
60
+ request_has_path_params=False,
61
+ request_has_query_params=True,
62
+ user_agent_header="user-agent",
63
+ accept_header_value="application/json",
64
+ http_headers=http_headers,
65
+ security=self.sdk_configuration.security,
66
+ allow_empty_value=None,
67
+ allowed_fields=["client_id"],
68
+ timeout_ms=timeout_ms,
69
+ )
70
+
71
+ if retries == UNSET:
72
+ if self.sdk_configuration.retry_config is not UNSET:
73
+ retries = self.sdk_configuration.retry_config
74
+ else:
75
+ retries = utils.RetryConfig(
76
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
77
+ )
78
+
79
+ retry_config = None
80
+ if isinstance(retries, utils.RetryConfig):
81
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
82
+
83
+ http_res = self.do_request(
84
+ hook_ctx=HookContext(
85
+ config=self.sdk_configuration,
86
+ base_url=base_url or "",
87
+ operation_id="getCompanyExecutives",
88
+ oauth2_scopes=["market:supplemental"],
89
+ security_source=self.sdk_configuration.security,
90
+ tags=["Company"],
91
+ extensions=None,
92
+ ),
93
+ request=req,
94
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
95
+ retry_config=retry_config,
96
+ )
97
+
98
+ response_data: Any = None
99
+ if utils.match_response(http_res, "200", "application/json"):
100
+ return models.GetCompanyExecutivesResponse(
101
+ company_executive_response=unmarshal_json_response(
102
+ Optional[models.CompanyExecutiveResponse], http_res
103
+ ),
104
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
105
+ )
106
+ if utils.match_response(http_res, "400", "application/json"):
107
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
108
+ response_data.http_meta = models.HTTPMetadata(
109
+ request=req, response=http_res
110
+ )
111
+ raise errors.BadRequest(response_data, http_res)
112
+ if utils.match_response(http_res, "401", "application/json"):
113
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
114
+ response_data.http_meta = models.HTTPMetadata(
115
+ request=req, response=http_res
116
+ )
117
+ raise errors.Unauthorized(response_data, http_res)
118
+ if utils.match_response(http_res, "403", "application/json"):
119
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
120
+ response_data.http_meta = models.HTTPMetadata(
121
+ request=req, response=http_res
122
+ )
123
+ raise errors.Forbidden(response_data, http_res)
124
+ if utils.match_response(http_res, "404", "application/json"):
125
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
126
+ response_data.http_meta = models.HTTPMetadata(
127
+ request=req, response=http_res
128
+ )
129
+ raise errors.NotFound(response_data, http_res)
130
+ if utils.match_response(http_res, "500", "application/json"):
131
+ response_data = unmarshal_json_response(
132
+ errors.InternalServerErrorUnion, http_res
133
+ )
134
+ response_data.http_meta = models.HTTPMetadata(
135
+ request=req, response=http_res
136
+ )
137
+ raise errors.InternalServerError(response_data, http_res)
138
+ if utils.match_response(http_res, "4XX", "*"):
139
+ http_res_text = utils.stream_to_text(http_res)
140
+ raise errors.APIError("API error occurred", http_res, http_res_text)
141
+ if utils.match_response(http_res, "5XX", "*"):
142
+ http_res_text = utils.stream_to_text(http_res)
143
+ raise errors.APIError("API error occurred", http_res, http_res_text)
144
+
145
+ raise errors.APIError("Unexpected response received", http_res)
146
+
147
+ async def get_company_executives_async(
148
+ self,
149
+ *,
150
+ symbol: str,
151
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
152
+ server_url: Optional[str] = None,
153
+ timeout_ms: Optional[int] = None,
154
+ http_headers: Optional[Mapping[str, str]] = None,
155
+ ) -> models.GetCompanyExecutivesResponse:
156
+ r"""Get Company Executives
157
+
158
+ Retrieve information about company executives and key management personnel including names, titles, compensation, and tenure.
159
+
160
+ Returns 404 Not Found with error code `NOT_FOUND` when no executive data is available for the specified symbol.
161
+
162
+ If set, this operation will use `client_id` from the global security.
163
+
164
+ :param symbol: Stock ticker symbol to research, such as AAPL.
165
+ :param retries: Override the default retry configuration for this method
166
+ :param server_url: Override the default server URL for this method
167
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
168
+ :param http_headers: Additional headers to set or replace on requests.
169
+ """
170
+ base_url = None
171
+ url_variables = None
172
+ if timeout_ms is None:
173
+ timeout_ms = self.sdk_configuration.timeout_ms
174
+
175
+ if timeout_ms is None:
176
+ timeout_ms = 30000
177
+
178
+ if server_url is not None:
179
+ base_url = server_url
180
+ else:
181
+ base_url = self._get_url(base_url, url_variables)
182
+
183
+ request = models.GetCompanyExecutivesRequest(
184
+ symbol=symbol,
185
+ )
186
+
187
+ req = self._build_request_async(
188
+ method="GET",
189
+ path="/v1/company/executive",
190
+ base_url=base_url,
191
+ url_variables=url_variables,
192
+ request=request,
193
+ request_body_required=False,
194
+ request_has_path_params=False,
195
+ request_has_query_params=True,
196
+ user_agent_header="user-agent",
197
+ accept_header_value="application/json",
198
+ http_headers=http_headers,
199
+ security=self.sdk_configuration.security,
200
+ allow_empty_value=None,
201
+ allowed_fields=["client_id"],
202
+ timeout_ms=timeout_ms,
203
+ )
204
+
205
+ if retries == UNSET:
206
+ if self.sdk_configuration.retry_config is not UNSET:
207
+ retries = self.sdk_configuration.retry_config
208
+ else:
209
+ retries = utils.RetryConfig(
210
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
211
+ )
212
+
213
+ retry_config = None
214
+ if isinstance(retries, utils.RetryConfig):
215
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
216
+
217
+ http_res = await self.do_request_async(
218
+ hook_ctx=HookContext(
219
+ config=self.sdk_configuration,
220
+ base_url=base_url or "",
221
+ operation_id="getCompanyExecutives",
222
+ oauth2_scopes=["market:supplemental"],
223
+ security_source=self.sdk_configuration.security,
224
+ tags=["Company"],
225
+ extensions=None,
226
+ ),
227
+ request=req,
228
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
229
+ retry_config=retry_config,
230
+ )
231
+
232
+ response_data: Any = None
233
+ if utils.match_response(http_res, "200", "application/json"):
234
+ return models.GetCompanyExecutivesResponse(
235
+ company_executive_response=unmarshal_json_response(
236
+ Optional[models.CompanyExecutiveResponse], http_res
237
+ ),
238
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
239
+ )
240
+ if utils.match_response(http_res, "400", "application/json"):
241
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
242
+ response_data.http_meta = models.HTTPMetadata(
243
+ request=req, response=http_res
244
+ )
245
+ raise errors.BadRequest(response_data, http_res)
246
+ if utils.match_response(http_res, "401", "application/json"):
247
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
248
+ response_data.http_meta = models.HTTPMetadata(
249
+ request=req, response=http_res
250
+ )
251
+ raise errors.Unauthorized(response_data, http_res)
252
+ if utils.match_response(http_res, "403", "application/json"):
253
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
254
+ response_data.http_meta = models.HTTPMetadata(
255
+ request=req, response=http_res
256
+ )
257
+ raise errors.Forbidden(response_data, http_res)
258
+ if utils.match_response(http_res, "404", "application/json"):
259
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
260
+ response_data.http_meta = models.HTTPMetadata(
261
+ request=req, response=http_res
262
+ )
263
+ raise errors.NotFound(response_data, http_res)
264
+ if utils.match_response(http_res, "500", "application/json"):
265
+ response_data = unmarshal_json_response(
266
+ errors.InternalServerErrorUnion, http_res
267
+ )
268
+ response_data.http_meta = models.HTTPMetadata(
269
+ request=req, response=http_res
270
+ )
271
+ raise errors.InternalServerError(response_data, http_res)
272
+ if utils.match_response(http_res, "4XX", "*"):
273
+ http_res_text = await utils.stream_to_text_async(http_res)
274
+ raise errors.APIError("API error occurred", http_res, http_res_text)
275
+ if utils.match_response(http_res, "5XX", "*"):
276
+ http_res_text = await utils.stream_to_text_async(http_res)
277
+ raise errors.APIError("API error occurred", http_res, http_res_text)
278
+
279
+ raise errors.APIError("Unexpected response received", http_res)
280
+
281
+ def get_company_metrics(
282
+ self,
283
+ *,
284
+ symbol: str,
285
+ metric: models.GetCompanyMetricsMetric,
286
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
287
+ server_url: Optional[str] = None,
288
+ timeout_ms: Optional[int] = None,
289
+ http_headers: Optional[Mapping[str, str]] = None,
290
+ ) -> models.GetCompanyMetricsResponse:
291
+ r"""Get Company Financial Metrics
292
+
293
+ Retrieve key financial metrics and ratios including market capitalization, P/E ratio, dividend yield, profit margins, and return on equity.
294
+
295
+ Returns 404 Not Found with error code `NOT_FOUND` when no metrics are available for the specified criteria.
296
+
297
+ If set, this operation will use `client_id` from the global security.
298
+
299
+ :param symbol: Stock ticker symbol to research, such as AAPL.
300
+ :param metric: Which metric group to return. Currently only `all` is supported — it returns every available metric for the symbol.
301
+ :param retries: Override the default retry configuration for this method
302
+ :param server_url: Override the default server URL for this method
303
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
304
+ :param http_headers: Additional headers to set or replace on requests.
305
+ """
306
+ base_url = None
307
+ url_variables = None
308
+ if timeout_ms is None:
309
+ timeout_ms = self.sdk_configuration.timeout_ms
310
+
311
+ if timeout_ms is None:
312
+ timeout_ms = 30000
313
+
314
+ if server_url is not None:
315
+ base_url = server_url
316
+ else:
317
+ base_url = self._get_url(base_url, url_variables)
318
+
319
+ request = models.GetCompanyMetricsRequest(
320
+ symbol=symbol,
321
+ metric=metric,
322
+ )
323
+
324
+ req = self._build_request(
325
+ method="GET",
326
+ path="/v1/company/metrics",
327
+ base_url=base_url,
328
+ url_variables=url_variables,
329
+ request=request,
330
+ request_body_required=False,
331
+ request_has_path_params=False,
332
+ request_has_query_params=True,
333
+ user_agent_header="user-agent",
334
+ accept_header_value="application/json",
335
+ http_headers=http_headers,
336
+ security=self.sdk_configuration.security,
337
+ allow_empty_value=None,
338
+ allowed_fields=["client_id"],
339
+ timeout_ms=timeout_ms,
340
+ )
341
+
342
+ if retries == UNSET:
343
+ if self.sdk_configuration.retry_config is not UNSET:
344
+ retries = self.sdk_configuration.retry_config
345
+ else:
346
+ retries = utils.RetryConfig(
347
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
348
+ )
349
+
350
+ retry_config = None
351
+ if isinstance(retries, utils.RetryConfig):
352
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
353
+
354
+ http_res = self.do_request(
355
+ hook_ctx=HookContext(
356
+ config=self.sdk_configuration,
357
+ base_url=base_url or "",
358
+ operation_id="getCompanyMetrics",
359
+ oauth2_scopes=["market:supplemental"],
360
+ security_source=self.sdk_configuration.security,
361
+ tags=["Company"],
362
+ extensions=None,
363
+ ),
364
+ request=req,
365
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
366
+ retry_config=retry_config,
367
+ )
368
+
369
+ response_data: Any = None
370
+ if utils.match_response(http_res, "200", "application/json"):
371
+ return models.GetCompanyMetricsResponse(
372
+ basic_financials=unmarshal_json_response(
373
+ Optional[models.BasicFinancials], http_res
374
+ ),
375
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
376
+ )
377
+ if utils.match_response(http_res, "400", "application/json"):
378
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
379
+ response_data.http_meta = models.HTTPMetadata(
380
+ request=req, response=http_res
381
+ )
382
+ raise errors.BadRequest(response_data, http_res)
383
+ if utils.match_response(http_res, "401", "application/json"):
384
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
385
+ response_data.http_meta = models.HTTPMetadata(
386
+ request=req, response=http_res
387
+ )
388
+ raise errors.Unauthorized(response_data, http_res)
389
+ if utils.match_response(http_res, "403", "application/json"):
390
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
391
+ response_data.http_meta = models.HTTPMetadata(
392
+ request=req, response=http_res
393
+ )
394
+ raise errors.Forbidden(response_data, http_res)
395
+ if utils.match_response(http_res, "404", "application/json"):
396
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
397
+ response_data.http_meta = models.HTTPMetadata(
398
+ request=req, response=http_res
399
+ )
400
+ raise errors.NotFound(response_data, http_res)
401
+ if utils.match_response(http_res, "500", "application/json"):
402
+ response_data = unmarshal_json_response(
403
+ errors.InternalServerErrorUnion, http_res
404
+ )
405
+ response_data.http_meta = models.HTTPMetadata(
406
+ request=req, response=http_res
407
+ )
408
+ raise errors.InternalServerError(response_data, http_res)
409
+ if utils.match_response(http_res, "4XX", "*"):
410
+ http_res_text = utils.stream_to_text(http_res)
411
+ raise errors.APIError("API error occurred", http_res, http_res_text)
412
+ if utils.match_response(http_res, "5XX", "*"):
413
+ http_res_text = utils.stream_to_text(http_res)
414
+ raise errors.APIError("API error occurred", http_res, http_res_text)
415
+
416
+ raise errors.APIError("Unexpected response received", http_res)
417
+
418
+ async def get_company_metrics_async(
419
+ self,
420
+ *,
421
+ symbol: str,
422
+ metric: models.GetCompanyMetricsMetric,
423
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
424
+ server_url: Optional[str] = None,
425
+ timeout_ms: Optional[int] = None,
426
+ http_headers: Optional[Mapping[str, str]] = None,
427
+ ) -> models.GetCompanyMetricsResponse:
428
+ r"""Get Company Financial Metrics
429
+
430
+ Retrieve key financial metrics and ratios including market capitalization, P/E ratio, dividend yield, profit margins, and return on equity.
431
+
432
+ Returns 404 Not Found with error code `NOT_FOUND` when no metrics are available for the specified criteria.
433
+
434
+ If set, this operation will use `client_id` from the global security.
435
+
436
+ :param symbol: Stock ticker symbol to research, such as AAPL.
437
+ :param metric: Which metric group to return. Currently only `all` is supported — it returns every available metric for the symbol.
438
+ :param retries: Override the default retry configuration for this method
439
+ :param server_url: Override the default server URL for this method
440
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
441
+ :param http_headers: Additional headers to set or replace on requests.
442
+ """
443
+ base_url = None
444
+ url_variables = None
445
+ if timeout_ms is None:
446
+ timeout_ms = self.sdk_configuration.timeout_ms
447
+
448
+ if timeout_ms is None:
449
+ timeout_ms = 30000
450
+
451
+ if server_url is not None:
452
+ base_url = server_url
453
+ else:
454
+ base_url = self._get_url(base_url, url_variables)
455
+
456
+ request = models.GetCompanyMetricsRequest(
457
+ symbol=symbol,
458
+ metric=metric,
459
+ )
460
+
461
+ req = self._build_request_async(
462
+ method="GET",
463
+ path="/v1/company/metrics",
464
+ base_url=base_url,
465
+ url_variables=url_variables,
466
+ request=request,
467
+ request_body_required=False,
468
+ request_has_path_params=False,
469
+ request_has_query_params=True,
470
+ user_agent_header="user-agent",
471
+ accept_header_value="application/json",
472
+ http_headers=http_headers,
473
+ security=self.sdk_configuration.security,
474
+ allow_empty_value=None,
475
+ allowed_fields=["client_id"],
476
+ timeout_ms=timeout_ms,
477
+ )
478
+
479
+ if retries == UNSET:
480
+ if self.sdk_configuration.retry_config is not UNSET:
481
+ retries = self.sdk_configuration.retry_config
482
+ else:
483
+ retries = utils.RetryConfig(
484
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
485
+ )
486
+
487
+ retry_config = None
488
+ if isinstance(retries, utils.RetryConfig):
489
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
490
+
491
+ http_res = await self.do_request_async(
492
+ hook_ctx=HookContext(
493
+ config=self.sdk_configuration,
494
+ base_url=base_url or "",
495
+ operation_id="getCompanyMetrics",
496
+ oauth2_scopes=["market:supplemental"],
497
+ security_source=self.sdk_configuration.security,
498
+ tags=["Company"],
499
+ extensions=None,
500
+ ),
501
+ request=req,
502
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
503
+ retry_config=retry_config,
504
+ )
505
+
506
+ response_data: Any = None
507
+ if utils.match_response(http_res, "200", "application/json"):
508
+ return models.GetCompanyMetricsResponse(
509
+ basic_financials=unmarshal_json_response(
510
+ Optional[models.BasicFinancials], http_res
511
+ ),
512
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
513
+ )
514
+ if utils.match_response(http_res, "400", "application/json"):
515
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
516
+ response_data.http_meta = models.HTTPMetadata(
517
+ request=req, response=http_res
518
+ )
519
+ raise errors.BadRequest(response_data, http_res)
520
+ if utils.match_response(http_res, "401", "application/json"):
521
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
522
+ response_data.http_meta = models.HTTPMetadata(
523
+ request=req, response=http_res
524
+ )
525
+ raise errors.Unauthorized(response_data, http_res)
526
+ if utils.match_response(http_res, "403", "application/json"):
527
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
528
+ response_data.http_meta = models.HTTPMetadata(
529
+ request=req, response=http_res
530
+ )
531
+ raise errors.Forbidden(response_data, http_res)
532
+ if utils.match_response(http_res, "404", "application/json"):
533
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
534
+ response_data.http_meta = models.HTTPMetadata(
535
+ request=req, response=http_res
536
+ )
537
+ raise errors.NotFound(response_data, http_res)
538
+ if utils.match_response(http_res, "500", "application/json"):
539
+ response_data = unmarshal_json_response(
540
+ errors.InternalServerErrorUnion, http_res
541
+ )
542
+ response_data.http_meta = models.HTTPMetadata(
543
+ request=req, response=http_res
544
+ )
545
+ raise errors.InternalServerError(response_data, http_res)
546
+ if utils.match_response(http_res, "4XX", "*"):
547
+ http_res_text = await utils.stream_to_text_async(http_res)
548
+ raise errors.APIError("API error occurred", http_res, http_res_text)
549
+ if utils.match_response(http_res, "5XX", "*"):
550
+ http_res_text = await utils.stream_to_text_async(http_res)
551
+ raise errors.APIError("API error occurred", http_res, http_res_text)
552
+
553
+ raise errors.APIError("Unexpected response received", http_res)
554
+
555
+ def get_company_peers(
556
+ self,
557
+ *,
558
+ symbol: str,
559
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
560
+ server_url: Optional[str] = None,
561
+ timeout_ms: Optional[int] = None,
562
+ http_headers: Optional[Mapping[str, str]] = None,
563
+ ) -> models.GetCompanyPeersResponse:
564
+ r"""Get Company Peers
565
+
566
+ Retrieve a list of peer companies within the same industry or sector that are comparable in size and business model.
567
+
568
+ Returns 404 Not Found with error code `NOT_FOUND` when no peers are available for the specified symbol.
569
+
570
+ If set, this operation will use `client_id` from the global security.
571
+
572
+ :param symbol: Stock ticker symbol to research, such as AAPL.
573
+ :param retries: Override the default retry configuration for this method
574
+ :param server_url: Override the default server URL for this method
575
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
576
+ :param http_headers: Additional headers to set or replace on requests.
577
+ """
578
+ base_url = None
579
+ url_variables = None
580
+ if timeout_ms is None:
581
+ timeout_ms = self.sdk_configuration.timeout_ms
582
+
583
+ if timeout_ms is None:
584
+ timeout_ms = 30000
585
+
586
+ if server_url is not None:
587
+ base_url = server_url
588
+ else:
589
+ base_url = self._get_url(base_url, url_variables)
590
+
591
+ request = models.GetCompanyPeersRequest(
592
+ symbol=symbol,
593
+ )
594
+
595
+ req = self._build_request(
596
+ method="GET",
597
+ path="/v1/company/peers",
598
+ base_url=base_url,
599
+ url_variables=url_variables,
600
+ request=request,
601
+ request_body_required=False,
602
+ request_has_path_params=False,
603
+ request_has_query_params=True,
604
+ user_agent_header="user-agent",
605
+ accept_header_value="application/json",
606
+ http_headers=http_headers,
607
+ security=self.sdk_configuration.security,
608
+ allow_empty_value=None,
609
+ allowed_fields=["client_id"],
610
+ timeout_ms=timeout_ms,
611
+ )
612
+
613
+ if retries == UNSET:
614
+ if self.sdk_configuration.retry_config is not UNSET:
615
+ retries = self.sdk_configuration.retry_config
616
+ else:
617
+ retries = utils.RetryConfig(
618
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
619
+ )
620
+
621
+ retry_config = None
622
+ if isinstance(retries, utils.RetryConfig):
623
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
624
+
625
+ http_res = self.do_request(
626
+ hook_ctx=HookContext(
627
+ config=self.sdk_configuration,
628
+ base_url=base_url or "",
629
+ operation_id="getCompanyPeers",
630
+ oauth2_scopes=["market:supplemental"],
631
+ security_source=self.sdk_configuration.security,
632
+ tags=["Company"],
633
+ extensions=None,
634
+ ),
635
+ request=req,
636
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
637
+ retry_config=retry_config,
638
+ )
639
+
640
+ response_data: Any = None
641
+ if utils.match_response(http_res, "200", "application/json"):
642
+ return models.GetCompanyPeersResponse(
643
+ company_peers_response=unmarshal_json_response(
644
+ Optional[models.CompanyPeersResponse], http_res
645
+ ),
646
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
647
+ )
648
+ if utils.match_response(http_res, "400", "application/json"):
649
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
650
+ response_data.http_meta = models.HTTPMetadata(
651
+ request=req, response=http_res
652
+ )
653
+ raise errors.BadRequest(response_data, http_res)
654
+ if utils.match_response(http_res, "401", "application/json"):
655
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
656
+ response_data.http_meta = models.HTTPMetadata(
657
+ request=req, response=http_res
658
+ )
659
+ raise errors.Unauthorized(response_data, http_res)
660
+ if utils.match_response(http_res, "403", "application/json"):
661
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
662
+ response_data.http_meta = models.HTTPMetadata(
663
+ request=req, response=http_res
664
+ )
665
+ raise errors.Forbidden(response_data, http_res)
666
+ if utils.match_response(http_res, "404", "application/json"):
667
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
668
+ response_data.http_meta = models.HTTPMetadata(
669
+ request=req, response=http_res
670
+ )
671
+ raise errors.NotFound(response_data, http_res)
672
+ if utils.match_response(http_res, "500", "application/json"):
673
+ response_data = unmarshal_json_response(
674
+ errors.InternalServerErrorUnion, http_res
675
+ )
676
+ response_data.http_meta = models.HTTPMetadata(
677
+ request=req, response=http_res
678
+ )
679
+ raise errors.InternalServerError(response_data, http_res)
680
+ if utils.match_response(http_res, "4XX", "*"):
681
+ http_res_text = utils.stream_to_text(http_res)
682
+ raise errors.APIError("API error occurred", http_res, http_res_text)
683
+ if utils.match_response(http_res, "5XX", "*"):
684
+ http_res_text = utils.stream_to_text(http_res)
685
+ raise errors.APIError("API error occurred", http_res, http_res_text)
686
+
687
+ raise errors.APIError("Unexpected response received", http_res)
688
+
689
+ async def get_company_peers_async(
690
+ self,
691
+ *,
692
+ symbol: str,
693
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
694
+ server_url: Optional[str] = None,
695
+ timeout_ms: Optional[int] = None,
696
+ http_headers: Optional[Mapping[str, str]] = None,
697
+ ) -> models.GetCompanyPeersResponse:
698
+ r"""Get Company Peers
699
+
700
+ Retrieve a list of peer companies within the same industry or sector that are comparable in size and business model.
701
+
702
+ Returns 404 Not Found with error code `NOT_FOUND` when no peers are available for the specified symbol.
703
+
704
+ If set, this operation will use `client_id` from the global security.
705
+
706
+ :param symbol: Stock ticker symbol to research, such as AAPL.
707
+ :param retries: Override the default retry configuration for this method
708
+ :param server_url: Override the default server URL for this method
709
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
710
+ :param http_headers: Additional headers to set or replace on requests.
711
+ """
712
+ base_url = None
713
+ url_variables = None
714
+ if timeout_ms is None:
715
+ timeout_ms = self.sdk_configuration.timeout_ms
716
+
717
+ if timeout_ms is None:
718
+ timeout_ms = 30000
719
+
720
+ if server_url is not None:
721
+ base_url = server_url
722
+ else:
723
+ base_url = self._get_url(base_url, url_variables)
724
+
725
+ request = models.GetCompanyPeersRequest(
726
+ symbol=symbol,
727
+ )
728
+
729
+ req = self._build_request_async(
730
+ method="GET",
731
+ path="/v1/company/peers",
732
+ base_url=base_url,
733
+ url_variables=url_variables,
734
+ request=request,
735
+ request_body_required=False,
736
+ request_has_path_params=False,
737
+ request_has_query_params=True,
738
+ user_agent_header="user-agent",
739
+ accept_header_value="application/json",
740
+ http_headers=http_headers,
741
+ security=self.sdk_configuration.security,
742
+ allow_empty_value=None,
743
+ allowed_fields=["client_id"],
744
+ timeout_ms=timeout_ms,
745
+ )
746
+
747
+ if retries == UNSET:
748
+ if self.sdk_configuration.retry_config is not UNSET:
749
+ retries = self.sdk_configuration.retry_config
750
+ else:
751
+ retries = utils.RetryConfig(
752
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
753
+ )
754
+
755
+ retry_config = None
756
+ if isinstance(retries, utils.RetryConfig):
757
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
758
+
759
+ http_res = await self.do_request_async(
760
+ hook_ctx=HookContext(
761
+ config=self.sdk_configuration,
762
+ base_url=base_url or "",
763
+ operation_id="getCompanyPeers",
764
+ oauth2_scopes=["market:supplemental"],
765
+ security_source=self.sdk_configuration.security,
766
+ tags=["Company"],
767
+ extensions=None,
768
+ ),
769
+ request=req,
770
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
771
+ retry_config=retry_config,
772
+ )
773
+
774
+ response_data: Any = None
775
+ if utils.match_response(http_res, "200", "application/json"):
776
+ return models.GetCompanyPeersResponse(
777
+ company_peers_response=unmarshal_json_response(
778
+ Optional[models.CompanyPeersResponse], http_res
779
+ ),
780
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
781
+ )
782
+ if utils.match_response(http_res, "400", "application/json"):
783
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
784
+ response_data.http_meta = models.HTTPMetadata(
785
+ request=req, response=http_res
786
+ )
787
+ raise errors.BadRequest(response_data, http_res)
788
+ if utils.match_response(http_res, "401", "application/json"):
789
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
790
+ response_data.http_meta = models.HTTPMetadata(
791
+ request=req, response=http_res
792
+ )
793
+ raise errors.Unauthorized(response_data, http_res)
794
+ if utils.match_response(http_res, "403", "application/json"):
795
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
796
+ response_data.http_meta = models.HTTPMetadata(
797
+ request=req, response=http_res
798
+ )
799
+ raise errors.Forbidden(response_data, http_res)
800
+ if utils.match_response(http_res, "404", "application/json"):
801
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
802
+ response_data.http_meta = models.HTTPMetadata(
803
+ request=req, response=http_res
804
+ )
805
+ raise errors.NotFound(response_data, http_res)
806
+ if utils.match_response(http_res, "500", "application/json"):
807
+ response_data = unmarshal_json_response(
808
+ errors.InternalServerErrorUnion, http_res
809
+ )
810
+ response_data.http_meta = models.HTTPMetadata(
811
+ request=req, response=http_res
812
+ )
813
+ raise errors.InternalServerError(response_data, http_res)
814
+ if utils.match_response(http_res, "4XX", "*"):
815
+ http_res_text = await utils.stream_to_text_async(http_res)
816
+ raise errors.APIError("API error occurred", http_res, http_res_text)
817
+ if utils.match_response(http_res, "5XX", "*"):
818
+ http_res_text = await utils.stream_to_text_async(http_res)
819
+ raise errors.APIError("API error occurred", http_res, http_res_text)
820
+
821
+ raise errors.APIError("Unexpected response received", http_res)
822
+
823
+ def get_company_profile(
824
+ self,
825
+ *,
826
+ symbol: Optional[str] = None,
827
+ isin: Optional[str] = None,
828
+ cusip: Optional[str] = None,
829
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
830
+ server_url: Optional[str] = None,
831
+ timeout_ms: Optional[int] = None,
832
+ http_headers: Optional[Mapping[str, str]] = None,
833
+ ) -> models.GetCompanyProfileResponse:
834
+ r"""Get Company Profile
835
+
836
+ Retrieve comprehensive company information including business description, industry classification, headquarters location, and key identifiers. At least one of symbol, ISIN, or CUSIP must be provided. If all three are omitted, the API returns 400 Bad Request. Response includes masked logo URL for privacy.
837
+
838
+ At least one of symbol, isin, or cusip is required. Multiple identifiers are accepted.
839
+
840
+ Returns 404 Not Found with error code `NOT_FOUND` when no company profile matches the supplied identifiers.
841
+
842
+ If set, this operation will use `client_id` from the global security.
843
+
844
+ :param symbol: Stock ticker symbol, such as AAPL. Optional if ISIN or CUSIP is provided. If symbol, isin, and cusip are all omitted, the API returns 400 Bad Request.
845
+ :param isin: International Securities Identification Number. Optional if symbol or CUSIP is provided. If symbol, isin, and cusip are all omitted, the API returns 400 Bad Request.
846
+ :param cusip: Committee on Uniform Securities Identification Procedures code. Optional if symbol or ISIN is provided. If symbol, isin, and cusip are all omitted, the API returns 400 Bad Request.
847
+ :param retries: Override the default retry configuration for this method
848
+ :param server_url: Override the default server URL for this method
849
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
850
+ :param http_headers: Additional headers to set or replace on requests.
851
+ """
852
+ base_url = None
853
+ url_variables = None
854
+ if timeout_ms is None:
855
+ timeout_ms = self.sdk_configuration.timeout_ms
856
+
857
+ if timeout_ms is None:
858
+ timeout_ms = 30000
859
+
860
+ if server_url is not None:
861
+ base_url = server_url
862
+ else:
863
+ base_url = self._get_url(base_url, url_variables)
864
+
865
+ request = models.GetCompanyProfileRequest(
866
+ symbol=symbol,
867
+ isin=isin,
868
+ cusip=cusip,
869
+ )
870
+
871
+ req = self._build_request(
872
+ method="GET",
873
+ path="/v1/company/profile",
874
+ base_url=base_url,
875
+ url_variables=url_variables,
876
+ request=request,
877
+ request_body_required=False,
878
+ request_has_path_params=False,
879
+ request_has_query_params=True,
880
+ user_agent_header="user-agent",
881
+ accept_header_value="application/json",
882
+ http_headers=http_headers,
883
+ security=self.sdk_configuration.security,
884
+ allow_empty_value=None,
885
+ allowed_fields=["client_id"],
886
+ timeout_ms=timeout_ms,
887
+ )
888
+
889
+ if retries == UNSET:
890
+ if self.sdk_configuration.retry_config is not UNSET:
891
+ retries = self.sdk_configuration.retry_config
892
+ else:
893
+ retries = utils.RetryConfig(
894
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
895
+ )
896
+
897
+ retry_config = None
898
+ if isinstance(retries, utils.RetryConfig):
899
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
900
+
901
+ http_res = self.do_request(
902
+ hook_ctx=HookContext(
903
+ config=self.sdk_configuration,
904
+ base_url=base_url or "",
905
+ operation_id="getCompanyProfile",
906
+ oauth2_scopes=["market:supplemental"],
907
+ security_source=self.sdk_configuration.security,
908
+ tags=["Company"],
909
+ extensions=None,
910
+ ),
911
+ request=req,
912
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
913
+ retry_config=retry_config,
914
+ )
915
+
916
+ response_data: Any = None
917
+ if utils.match_response(http_res, "200", "application/json"):
918
+ return models.GetCompanyProfileResponse(
919
+ company_profile=unmarshal_json_response(
920
+ Optional[models.CompanyProfile], http_res
921
+ ),
922
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
923
+ )
924
+ if utils.match_response(http_res, "400", "application/json"):
925
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
926
+ response_data.http_meta = models.HTTPMetadata(
927
+ request=req, response=http_res
928
+ )
929
+ raise errors.BadRequest(response_data, http_res)
930
+ if utils.match_response(http_res, "401", "application/json"):
931
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
932
+ response_data.http_meta = models.HTTPMetadata(
933
+ request=req, response=http_res
934
+ )
935
+ raise errors.Unauthorized(response_data, http_res)
936
+ if utils.match_response(http_res, "403", "application/json"):
937
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
938
+ response_data.http_meta = models.HTTPMetadata(
939
+ request=req, response=http_res
940
+ )
941
+ raise errors.Forbidden(response_data, http_res)
942
+ if utils.match_response(http_res, "404", "application/json"):
943
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
944
+ response_data.http_meta = models.HTTPMetadata(
945
+ request=req, response=http_res
946
+ )
947
+ raise errors.NotFound(response_data, http_res)
948
+ if utils.match_response(http_res, "500", "application/json"):
949
+ response_data = unmarshal_json_response(
950
+ errors.InternalServerErrorUnion, http_res
951
+ )
952
+ response_data.http_meta = models.HTTPMetadata(
953
+ request=req, response=http_res
954
+ )
955
+ raise errors.InternalServerError(response_data, http_res)
956
+ if utils.match_response(http_res, "4XX", "*"):
957
+ http_res_text = utils.stream_to_text(http_res)
958
+ raise errors.APIError("API error occurred", http_res, http_res_text)
959
+ if utils.match_response(http_res, "5XX", "*"):
960
+ http_res_text = utils.stream_to_text(http_res)
961
+ raise errors.APIError("API error occurred", http_res, http_res_text)
962
+
963
+ raise errors.APIError("Unexpected response received", http_res)
964
+
965
+ async def get_company_profile_async(
966
+ self,
967
+ *,
968
+ symbol: Optional[str] = None,
969
+ isin: Optional[str] = None,
970
+ cusip: Optional[str] = None,
971
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
972
+ server_url: Optional[str] = None,
973
+ timeout_ms: Optional[int] = None,
974
+ http_headers: Optional[Mapping[str, str]] = None,
975
+ ) -> models.GetCompanyProfileResponse:
976
+ r"""Get Company Profile
977
+
978
+ Retrieve comprehensive company information including business description, industry classification, headquarters location, and key identifiers. At least one of symbol, ISIN, or CUSIP must be provided. If all three are omitted, the API returns 400 Bad Request. Response includes masked logo URL for privacy.
979
+
980
+ At least one of symbol, isin, or cusip is required. Multiple identifiers are accepted.
981
+
982
+ Returns 404 Not Found with error code `NOT_FOUND` when no company profile matches the supplied identifiers.
983
+
984
+ If set, this operation will use `client_id` from the global security.
985
+
986
+ :param symbol: Stock ticker symbol, such as AAPL. Optional if ISIN or CUSIP is provided. If symbol, isin, and cusip are all omitted, the API returns 400 Bad Request.
987
+ :param isin: International Securities Identification Number. Optional if symbol or CUSIP is provided. If symbol, isin, and cusip are all omitted, the API returns 400 Bad Request.
988
+ :param cusip: Committee on Uniform Securities Identification Procedures code. Optional if symbol or ISIN is provided. If symbol, isin, and cusip are all omitted, the API returns 400 Bad Request.
989
+ :param retries: Override the default retry configuration for this method
990
+ :param server_url: Override the default server URL for this method
991
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
992
+ :param http_headers: Additional headers to set or replace on requests.
993
+ """
994
+ base_url = None
995
+ url_variables = None
996
+ if timeout_ms is None:
997
+ timeout_ms = self.sdk_configuration.timeout_ms
998
+
999
+ if timeout_ms is None:
1000
+ timeout_ms = 30000
1001
+
1002
+ if server_url is not None:
1003
+ base_url = server_url
1004
+ else:
1005
+ base_url = self._get_url(base_url, url_variables)
1006
+
1007
+ request = models.GetCompanyProfileRequest(
1008
+ symbol=symbol,
1009
+ isin=isin,
1010
+ cusip=cusip,
1011
+ )
1012
+
1013
+ req = self._build_request_async(
1014
+ method="GET",
1015
+ path="/v1/company/profile",
1016
+ base_url=base_url,
1017
+ url_variables=url_variables,
1018
+ request=request,
1019
+ request_body_required=False,
1020
+ request_has_path_params=False,
1021
+ request_has_query_params=True,
1022
+ user_agent_header="user-agent",
1023
+ accept_header_value="application/json",
1024
+ http_headers=http_headers,
1025
+ security=self.sdk_configuration.security,
1026
+ allow_empty_value=None,
1027
+ allowed_fields=["client_id"],
1028
+ timeout_ms=timeout_ms,
1029
+ )
1030
+
1031
+ if retries == UNSET:
1032
+ if self.sdk_configuration.retry_config is not UNSET:
1033
+ retries = self.sdk_configuration.retry_config
1034
+ else:
1035
+ retries = utils.RetryConfig(
1036
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
1037
+ )
1038
+
1039
+ retry_config = None
1040
+ if isinstance(retries, utils.RetryConfig):
1041
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1042
+
1043
+ http_res = await self.do_request_async(
1044
+ hook_ctx=HookContext(
1045
+ config=self.sdk_configuration,
1046
+ base_url=base_url or "",
1047
+ operation_id="getCompanyProfile",
1048
+ oauth2_scopes=["market:supplemental"],
1049
+ security_source=self.sdk_configuration.security,
1050
+ tags=["Company"],
1051
+ extensions=None,
1052
+ ),
1053
+ request=req,
1054
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
1055
+ retry_config=retry_config,
1056
+ )
1057
+
1058
+ response_data: Any = None
1059
+ if utils.match_response(http_res, "200", "application/json"):
1060
+ return models.GetCompanyProfileResponse(
1061
+ company_profile=unmarshal_json_response(
1062
+ Optional[models.CompanyProfile], http_res
1063
+ ),
1064
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
1065
+ )
1066
+ if utils.match_response(http_res, "400", "application/json"):
1067
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
1068
+ response_data.http_meta = models.HTTPMetadata(
1069
+ request=req, response=http_res
1070
+ )
1071
+ raise errors.BadRequest(response_data, http_res)
1072
+ if utils.match_response(http_res, "401", "application/json"):
1073
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
1074
+ response_data.http_meta = models.HTTPMetadata(
1075
+ request=req, response=http_res
1076
+ )
1077
+ raise errors.Unauthorized(response_data, http_res)
1078
+ if utils.match_response(http_res, "403", "application/json"):
1079
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
1080
+ response_data.http_meta = models.HTTPMetadata(
1081
+ request=req, response=http_res
1082
+ )
1083
+ raise errors.Forbidden(response_data, http_res)
1084
+ if utils.match_response(http_res, "404", "application/json"):
1085
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
1086
+ response_data.http_meta = models.HTTPMetadata(
1087
+ request=req, response=http_res
1088
+ )
1089
+ raise errors.NotFound(response_data, http_res)
1090
+ if utils.match_response(http_res, "500", "application/json"):
1091
+ response_data = unmarshal_json_response(
1092
+ errors.InternalServerErrorUnion, http_res
1093
+ )
1094
+ response_data.http_meta = models.HTTPMetadata(
1095
+ request=req, response=http_res
1096
+ )
1097
+ raise errors.InternalServerError(response_data, http_res)
1098
+ if utils.match_response(http_res, "4XX", "*"):
1099
+ http_res_text = await utils.stream_to_text_async(http_res)
1100
+ raise errors.APIError("API error occurred", http_res, http_res_text)
1101
+ if utils.match_response(http_res, "5XX", "*"):
1102
+ http_res_text = await utils.stream_to_text_async(http_res)
1103
+ raise errors.APIError("API error occurred", http_res, http_res_text)
1104
+
1105
+ raise errors.APIError("Unexpected response received", http_res)