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
@@ -0,0 +1,166 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 56b2c0f57a20
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import List, Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class LobbyingResponseDataTypedDict(TypedDict):
13
+ client_id: NotRequired[str]
14
+ r"""Client identifier."""
15
+ country: NotRequired[str]
16
+ r"""Country."""
17
+ date_: NotRequired[str]
18
+ r"""Date of the filing, as returned by the provider."""
19
+ description: NotRequired[str]
20
+ r"""Description of the lobbying activity."""
21
+ document_url: NotRequired[str]
22
+ r"""URL of the source filing document."""
23
+ expenses: NotRequired[float]
24
+ r"""Expenses reported by the company."""
25
+ houseregistrant_id: NotRequired[str]
26
+ r"""House registrant identifier."""
27
+ income: NotRequired[float]
28
+ r"""Income reported by lobbying firms."""
29
+ name: NotRequired[str]
30
+ r"""Company name."""
31
+ period: NotRequired[str]
32
+ r"""Filing period."""
33
+ posted_name: NotRequired[str]
34
+ r"""Posted name on the filing."""
35
+ registrant_id: NotRequired[str]
36
+ r"""Registrant identifier."""
37
+ senate_id: NotRequired[str]
38
+ r"""Senate identifier."""
39
+ symbol: NotRequired[str]
40
+ r"""Company ticker symbol."""
41
+ year: NotRequired[int]
42
+ r"""Year of the filing."""
43
+
44
+
45
+ class LobbyingResponseData(BaseModel):
46
+ client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
47
+ r"""Client identifier."""
48
+
49
+ country: Optional[str] = None
50
+ r"""Country."""
51
+
52
+ date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
53
+ r"""Date of the filing, as returned by the provider."""
54
+
55
+ description: Optional[str] = None
56
+ r"""Description of the lobbying activity."""
57
+
58
+ document_url: Annotated[Optional[str], pydantic.Field(alias="documentUrl")] = None
59
+ r"""URL of the source filing document."""
60
+
61
+ expenses: Optional[float] = None
62
+ r"""Expenses reported by the company."""
63
+
64
+ houseregistrant_id: Annotated[
65
+ Optional[str], pydantic.Field(alias="houseregistrantId")
66
+ ] = None
67
+ r"""House registrant identifier."""
68
+
69
+ income: Optional[float] = None
70
+ r"""Income reported by lobbying firms."""
71
+
72
+ name: Optional[str] = None
73
+ r"""Company name."""
74
+
75
+ period: Optional[str] = None
76
+ r"""Filing period."""
77
+
78
+ posted_name: Annotated[Optional[str], pydantic.Field(alias="postedName")] = None
79
+ r"""Posted name on the filing."""
80
+
81
+ registrant_id: Annotated[Optional[str], pydantic.Field(alias="registrantId")] = None
82
+ r"""Registrant identifier."""
83
+
84
+ senate_id: Annotated[Optional[str], pydantic.Field(alias="senateId")] = None
85
+ r"""Senate identifier."""
86
+
87
+ symbol: Optional[str] = None
88
+ r"""Company ticker symbol."""
89
+
90
+ year: Optional[int] = None
91
+ r"""Year of the filing."""
92
+
93
+ @model_serializer(mode="wrap")
94
+ def serialize_model(self, handler):
95
+ optional_fields = set(
96
+ [
97
+ "clientId",
98
+ "country",
99
+ "date",
100
+ "description",
101
+ "documentUrl",
102
+ "expenses",
103
+ "houseregistrantId",
104
+ "income",
105
+ "name",
106
+ "period",
107
+ "postedName",
108
+ "registrantId",
109
+ "senateId",
110
+ "symbol",
111
+ "year",
112
+ ]
113
+ )
114
+ serialized = handler(self)
115
+ m = {}
116
+
117
+ for n, f in type(self).model_fields.items():
118
+ k = f.alias or n
119
+ val = serialized.get(k, serialized.get(n))
120
+
121
+ if val != UNSET_SENTINEL:
122
+ if val is not None or k not in optional_fields:
123
+ m[k] = val
124
+
125
+ return m
126
+
127
+
128
+ class LobbyingResponseTypedDict(TypedDict):
129
+ r"""US Senate and House lobbying activity reported for a company, as provided by Finnhub."""
130
+
131
+ data: NotRequired[List[LobbyingResponseDataTypedDict]]
132
+ r"""Lobbying records for the symbol."""
133
+ symbol: NotRequired[str]
134
+ r"""Company ticker symbol."""
135
+
136
+
137
+ class LobbyingResponse(BaseModel):
138
+ r"""US Senate and House lobbying activity reported for a company, as provided by Finnhub."""
139
+
140
+ data: Optional[List[LobbyingResponseData]] = None
141
+ r"""Lobbying records for the symbol."""
142
+
143
+ symbol: Optional[str] = None
144
+ r"""Company ticker symbol."""
145
+
146
+ @model_serializer(mode="wrap")
147
+ def serialize_model(self, handler):
148
+ optional_fields = set(["data", "symbol"])
149
+ serialized = handler(self)
150
+ m = {}
151
+
152
+ for n, f in type(self).model_fields.items():
153
+ k = f.alias or n
154
+ val = serialized.get(k, serialized.get(n))
155
+
156
+ if val != UNSET_SENTINEL:
157
+ if val is not None or k not in optional_fields:
158
+ m[k] = val
159
+
160
+ return m
161
+
162
+
163
+ try:
164
+ LobbyingResponseData.model_rebuild()
165
+ except NameError:
166
+ pass
@@ -0,0 +1,152 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 2ffdfe50f2e6
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import Any, Dict, List, Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class LogoSearchResponseFilesTypedDict(TypedDict):
13
+ r"""Available logo file variants"""
14
+
15
+ logo_dark: NotRequired[str]
16
+ r"""URL to full logo optimized for dark backgrounds (PNG)"""
17
+ logo_light: NotRequired[str]
18
+ r"""URL to full logo optimized for light backgrounds (PNG)"""
19
+ mark_dark: NotRequired[str]
20
+ r"""URL to logo mark/icon optimized for dark backgrounds (PNG)"""
21
+ mark_light: NotRequired[str]
22
+ r"""URL to logo mark/icon optimized for light backgrounds (PNG)"""
23
+
24
+
25
+ class LogoSearchResponseFiles(BaseModel):
26
+ r"""Available logo file variants"""
27
+
28
+ logo_dark: Annotated[Optional[str], pydantic.Field(alias="logoDark")] = None
29
+ r"""URL to full logo optimized for dark backgrounds (PNG)"""
30
+
31
+ logo_light: Annotated[Optional[str], pydantic.Field(alias="logoLight")] = None
32
+ r"""URL to full logo optimized for light backgrounds (PNG)"""
33
+
34
+ mark_dark: Annotated[Optional[str], pydantic.Field(alias="markDark")] = None
35
+ r"""URL to logo mark/icon optimized for dark backgrounds (PNG)"""
36
+
37
+ mark_light: Annotated[Optional[str], pydantic.Field(alias="markLight")] = None
38
+ r"""URL to logo mark/icon optimized for light backgrounds (PNG)"""
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = set(["logoDark", "logoLight", "markDark", "markLight"])
43
+ serialized = handler(self)
44
+ m = {}
45
+
46
+ for n, f in type(self).model_fields.items():
47
+ k = f.alias or n
48
+ val = serialized.get(k, serialized.get(n))
49
+
50
+ if val != UNSET_SENTINEL:
51
+ if val is not None or k not in optional_fields:
52
+ m[k] = val
53
+
54
+ return m
55
+
56
+
57
+ class LogoSearchResponseDataTypedDict(TypedDict):
58
+ colors: NotRequired[Dict[str, Any]]
59
+ r"""Brand color palette (if available)"""
60
+ created_at: NotRequired[str]
61
+ r"""Timestamp when the logo was first added (ISO 8601 format)"""
62
+ files: NotRequired[LogoSearchResponseFilesTypedDict]
63
+ r"""Available logo file variants"""
64
+ id: NotRequired[str]
65
+ r"""Unique identifier for the logo record"""
66
+ search_key: NotRequired[str]
67
+ r"""Search key used to identify the company (e.g., NASDAQ:TSLA)"""
68
+ updated_at: NotRequired[str]
69
+ r"""Timestamp when the logo was last updated (ISO 8601 format)"""
70
+
71
+
72
+ class LogoSearchResponseData(BaseModel):
73
+ colors: Optional[Dict[str, Any]] = None
74
+ r"""Brand color palette (if available)"""
75
+
76
+ created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None
77
+ r"""Timestamp when the logo was first added (ISO 8601 format)"""
78
+
79
+ files: Optional[LogoSearchResponseFiles] = None
80
+ r"""Available logo file variants"""
81
+
82
+ id: Optional[str] = None
83
+ r"""Unique identifier for the logo record"""
84
+
85
+ search_key: Annotated[Optional[str], pydantic.Field(alias="searchKey")] = None
86
+ r"""Search key used to identify the company (e.g., NASDAQ:TSLA)"""
87
+
88
+ updated_at: Annotated[Optional[str], pydantic.Field(alias="updatedAt")] = None
89
+ r"""Timestamp when the logo was last updated (ISO 8601 format)"""
90
+
91
+ @model_serializer(mode="wrap")
92
+ def serialize_model(self, handler):
93
+ optional_fields = set(
94
+ ["colors", "createdAt", "files", "id", "searchKey", "updatedAt"]
95
+ )
96
+ serialized = handler(self)
97
+ m = {}
98
+
99
+ for n, f in type(self).model_fields.items():
100
+ k = f.alias or n
101
+ val = serialized.get(k, serialized.get(n))
102
+
103
+ if val != UNSET_SENTINEL:
104
+ if val is not None or k not in optional_fields:
105
+ m[k] = val
106
+
107
+ return m
108
+
109
+
110
+ class LogoSearchResponseTypedDict(TypedDict):
111
+ r"""Response containing logo records that match a search query."""
112
+
113
+ data: NotRequired[List[LogoSearchResponseDataTypedDict]]
114
+ r"""Array of logo data matching the search query"""
115
+ ok: NotRequired[bool]
116
+ r"""Request success status"""
117
+
118
+
119
+ class LogoSearchResponse(BaseModel):
120
+ r"""Response containing logo records that match a search query."""
121
+
122
+ data: Optional[List[LogoSearchResponseData]] = None
123
+ r"""Array of logo data matching the search query"""
124
+
125
+ ok: Optional[bool] = None
126
+ r"""Request success status"""
127
+
128
+ @model_serializer(mode="wrap")
129
+ def serialize_model(self, handler):
130
+ optional_fields = set(["data", "ok"])
131
+ serialized = handler(self)
132
+ m = {}
133
+
134
+ for n, f in type(self).model_fields.items():
135
+ k = f.alias or n
136
+ val = serialized.get(k, serialized.get(n))
137
+
138
+ if val != UNSET_SENTINEL:
139
+ if val is not None or k not in optional_fields:
140
+ m[k] = val
141
+
142
+ return m
143
+
144
+
145
+ try:
146
+ LogoSearchResponseFiles.model_rebuild()
147
+ except NameError:
148
+ pass
149
+ try:
150
+ LogoSearchResponseData.model_rebuild()
151
+ except NameError:
152
+ pass
@@ -0,0 +1,277 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: e81d48f73654
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import Any, Dict, List, Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class LogoSyncResponseFilesTypedDict(TypedDict):
13
+ r"""Available logo file variants"""
14
+
15
+ logo_dark: NotRequired[str]
16
+ r"""URL to the full logo for dark backgrounds"""
17
+ logo_light: NotRequired[str]
18
+ r"""URL to the full logo for light backgrounds"""
19
+ logo_vector_dark: NotRequired[str]
20
+ r"""URL to the vector full logo for dark backgrounds"""
21
+ logo_vector_light: NotRequired[str]
22
+ r"""URL to the vector full logo for light backgrounds"""
23
+ mark_composite_dark: NotRequired[str]
24
+ r"""URL to the composite logo mark for dark backgrounds"""
25
+ mark_composite_light: NotRequired[str]
26
+ r"""URL to the composite logo mark for light backgrounds"""
27
+ mark_dark: NotRequired[str]
28
+ r"""URL to the logo mark for dark backgrounds"""
29
+ mark_light: NotRequired[str]
30
+ r"""URL to the logo mark for light backgrounds"""
31
+ mark_vector_dark: NotRequired[str]
32
+ r"""URL to the vector logo mark for dark backgrounds"""
33
+ mark_vector_light: NotRequired[str]
34
+ r"""URL to the vector logo mark for light backgrounds"""
35
+
36
+
37
+ class LogoSyncResponseFiles(BaseModel):
38
+ r"""Available logo file variants"""
39
+
40
+ logo_dark: Annotated[Optional[str], pydantic.Field(alias="logoDark")] = None
41
+ r"""URL to the full logo for dark backgrounds"""
42
+
43
+ logo_light: Annotated[Optional[str], pydantic.Field(alias="logoLight")] = None
44
+ r"""URL to the full logo for light backgrounds"""
45
+
46
+ logo_vector_dark: Annotated[
47
+ Optional[str], pydantic.Field(alias="logoVectorDark")
48
+ ] = None
49
+ r"""URL to the vector full logo for dark backgrounds"""
50
+
51
+ logo_vector_light: Annotated[
52
+ Optional[str], pydantic.Field(alias="logoVectorLight")
53
+ ] = None
54
+ r"""URL to the vector full logo for light backgrounds"""
55
+
56
+ mark_composite_dark: Annotated[
57
+ Optional[str], pydantic.Field(alias="markCompositeDark")
58
+ ] = None
59
+ r"""URL to the composite logo mark for dark backgrounds"""
60
+
61
+ mark_composite_light: Annotated[
62
+ Optional[str], pydantic.Field(alias="markCompositeLight")
63
+ ] = None
64
+ r"""URL to the composite logo mark for light backgrounds"""
65
+
66
+ mark_dark: Annotated[Optional[str], pydantic.Field(alias="markDark")] = None
67
+ r"""URL to the logo mark for dark backgrounds"""
68
+
69
+ mark_light: Annotated[Optional[str], pydantic.Field(alias="markLight")] = None
70
+ r"""URL to the logo mark for light backgrounds"""
71
+
72
+ mark_vector_dark: Annotated[
73
+ Optional[str], pydantic.Field(alias="markVectorDark")
74
+ ] = None
75
+ r"""URL to the vector logo mark for dark backgrounds"""
76
+
77
+ mark_vector_light: Annotated[
78
+ Optional[str], pydantic.Field(alias="markVectorLight")
79
+ ] = None
80
+ r"""URL to the vector logo mark for light backgrounds"""
81
+
82
+ @model_serializer(mode="wrap")
83
+ def serialize_model(self, handler):
84
+ optional_fields = set(
85
+ [
86
+ "logoDark",
87
+ "logoLight",
88
+ "logoVectorDark",
89
+ "logoVectorLight",
90
+ "markCompositeDark",
91
+ "markCompositeLight",
92
+ "markDark",
93
+ "markLight",
94
+ "markVectorDark",
95
+ "markVectorLight",
96
+ ]
97
+ )
98
+ serialized = handler(self)
99
+ m = {}
100
+
101
+ for n, f in type(self).model_fields.items():
102
+ k = f.alias or n
103
+ val = serialized.get(k, serialized.get(n))
104
+
105
+ if val != UNSET_SENTINEL:
106
+ if val is not None or k not in optional_fields:
107
+ m[k] = val
108
+
109
+ return m
110
+
111
+
112
+ class LogoSyncResponseSecurityTypedDict(TypedDict):
113
+ cik: NotRequired[str]
114
+ r"""Central Index Key assigned by the SEC"""
115
+ cusip: NotRequired[str]
116
+ r"""CUSIP identifier of the security"""
117
+ exchange: NotRequired[str]
118
+ r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
119
+ isin: NotRequired[str]
120
+ r"""ISIN identifier of the security"""
121
+ name: NotRequired[str]
122
+ r"""Name of the security"""
123
+ symbol: NotRequired[str]
124
+ r"""Ticker symbol of the security"""
125
+
126
+
127
+ class LogoSyncResponseSecurity(BaseModel):
128
+ cik: Optional[str] = None
129
+ r"""Central Index Key assigned by the SEC"""
130
+
131
+ cusip: Optional[str] = None
132
+ r"""CUSIP identifier of the security"""
133
+
134
+ exchange: Optional[str] = None
135
+ r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
136
+
137
+ isin: Optional[str] = None
138
+ r"""ISIN identifier of the security"""
139
+
140
+ name: Optional[str] = None
141
+ r"""Name of the security"""
142
+
143
+ symbol: Optional[str] = None
144
+ r"""Ticker symbol of the security"""
145
+
146
+ @model_serializer(mode="wrap")
147
+ def serialize_model(self, handler):
148
+ optional_fields = set(["cik", "cusip", "exchange", "isin", "name", "symbol"])
149
+ serialized = handler(self)
150
+ m = {}
151
+
152
+ for n, f in type(self).model_fields.items():
153
+ k = f.alias or n
154
+ val = serialized.get(k, serialized.get(n))
155
+
156
+ if val != UNSET_SENTINEL:
157
+ if val is not None or k not in optional_fields:
158
+ m[k] = val
159
+
160
+ return m
161
+
162
+
163
+ class LogoSyncResponseDataTypedDict(TypedDict):
164
+ colors: NotRequired[Dict[str, Any]]
165
+ r"""Key-value map; may be empty. Keys vary by record."""
166
+ created_at: NotRequired[str]
167
+ r"""Timestamp when the logo record was created"""
168
+ files: NotRequired[LogoSyncResponseFilesTypedDict]
169
+ r"""Available logo file variants"""
170
+ id: NotRequired[str]
171
+ r"""Unique identifier for the logo record"""
172
+ securities: NotRequired[List[LogoSyncResponseSecurityTypedDict]]
173
+ r"""Securities associated with the logo record"""
174
+ updated_at: NotRequired[str]
175
+ r"""Timestamp when the logo record was last updated"""
176
+
177
+
178
+ class LogoSyncResponseData(BaseModel):
179
+ colors: Optional[Dict[str, Any]] = None
180
+ r"""Key-value map; may be empty. Keys vary by record."""
181
+
182
+ created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None
183
+ r"""Timestamp when the logo record was created"""
184
+
185
+ files: Optional[LogoSyncResponseFiles] = None
186
+ r"""Available logo file variants"""
187
+
188
+ id: Optional[str] = None
189
+ r"""Unique identifier for the logo record"""
190
+
191
+ securities: Optional[List[LogoSyncResponseSecurity]] = None
192
+ r"""Securities associated with the logo record"""
193
+
194
+ updated_at: Annotated[Optional[str], pydantic.Field(alias="updatedAt")] = None
195
+ r"""Timestamp when the logo record was last updated"""
196
+
197
+ @model_serializer(mode="wrap")
198
+ def serialize_model(self, handler):
199
+ optional_fields = set(
200
+ ["colors", "createdAt", "files", "id", "securities", "updatedAt"]
201
+ )
202
+ serialized = handler(self)
203
+ m = {}
204
+
205
+ for n, f in type(self).model_fields.items():
206
+ k = f.alias or n
207
+ val = serialized.get(k, serialized.get(n))
208
+
209
+ if val != UNSET_SENTINEL:
210
+ if val is not None or k not in optional_fields:
211
+ m[k] = val
212
+
213
+ return m
214
+
215
+
216
+ class LogoSyncResponseTypedDict(TypedDict):
217
+ r"""Paginated response containing logo records for bulk sync."""
218
+
219
+ data: NotRequired[List[LogoSyncResponseDataTypedDict]]
220
+ r"""Array of logo records"""
221
+ has_more: NotRequired[bool]
222
+ r"""Whether more pages are available"""
223
+ ok: NotRequired[bool]
224
+ r"""Request success status"""
225
+ page: NotRequired[int]
226
+ r"""Current page number"""
227
+ page_size: NotRequired[int]
228
+ r"""Number of records per page"""
229
+
230
+
231
+ class LogoSyncResponse(BaseModel):
232
+ r"""Paginated response containing logo records for bulk sync."""
233
+
234
+ data: Optional[List[LogoSyncResponseData]] = None
235
+ r"""Array of logo records"""
236
+
237
+ has_more: Annotated[Optional[bool], pydantic.Field(alias="hasMore")] = None
238
+ r"""Whether more pages are available"""
239
+
240
+ ok: Optional[bool] = None
241
+ r"""Request success status"""
242
+
243
+ page: Optional[int] = None
244
+ r"""Current page number"""
245
+
246
+ page_size: Annotated[Optional[int], pydantic.Field(alias="pageSize")] = None
247
+ r"""Number of records per page"""
248
+
249
+ @model_serializer(mode="wrap")
250
+ def serialize_model(self, handler):
251
+ optional_fields = set(["data", "hasMore", "ok", "page", "pageSize"])
252
+ serialized = handler(self)
253
+ m = {}
254
+
255
+ for n, f in type(self).model_fields.items():
256
+ k = f.alias or n
257
+ val = serialized.get(k, serialized.get(n))
258
+
259
+ if val != UNSET_SENTINEL:
260
+ if val is not None or k not in optional_fields:
261
+ m[k] = val
262
+
263
+ return m
264
+
265
+
266
+ try:
267
+ LogoSyncResponseFiles.model_rebuild()
268
+ except NameError:
269
+ pass
270
+ try:
271
+ LogoSyncResponseData.model_rebuild()
272
+ except NameError:
273
+ pass
274
+ try:
275
+ LogoSyncResponse.model_rebuild()
276
+ except NameError:
277
+ pass
@@ -0,0 +1,97 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: f33ef86271fe
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class MarketBreadthTypedDict(TypedDict):
13
+ r"""Market breadth snapshot showing how many symbols are rising, falling, or unchanged. Use it to summarize overall market participation."""
14
+
15
+ advance_decline_ratio: NotRequired[float]
16
+ r"""Ratio of advancers to decliners"""
17
+ advancers: NotRequired[int]
18
+ r"""Number of advancing stocks"""
19
+ advancers_percent: NotRequired[float]
20
+ r"""Percentage of tracked symbols that are advancing. Use this to show how broad the market move is."""
21
+ decliners: NotRequired[int]
22
+ r"""Number of declining stocks"""
23
+ decliners_percent: NotRequired[float]
24
+ r"""Percentage of tracked symbols that are declining. Use this with advancers percent for market breadth displays."""
25
+ timestamp: NotRequired[str]
26
+ r"""Data timestamp in ISO 8601 format; fractional seconds may be present (for example microseconds)."""
27
+ total_symbols: NotRequired[int]
28
+ r"""Total number of symbols included in the breadth calculation."""
29
+ unchanged: NotRequired[int]
30
+ r"""Number of unchanged stocks"""
31
+
32
+
33
+ class MarketBreadth(BaseModel):
34
+ r"""Market breadth snapshot showing how many symbols are rising, falling, or unchanged. Use it to summarize overall market participation."""
35
+
36
+ advance_decline_ratio: Annotated[
37
+ Optional[float], pydantic.Field(alias="advanceDeclineRatio")
38
+ ] = None
39
+ r"""Ratio of advancers to decliners"""
40
+
41
+ advancers: Optional[int] = None
42
+ r"""Number of advancing stocks"""
43
+
44
+ advancers_percent: Annotated[
45
+ Optional[float], pydantic.Field(alias="advancersPercent")
46
+ ] = None
47
+ r"""Percentage of tracked symbols that are advancing. Use this to show how broad the market move is."""
48
+
49
+ decliners: Optional[int] = None
50
+ r"""Number of declining stocks"""
51
+
52
+ decliners_percent: Annotated[
53
+ Optional[float], pydantic.Field(alias="declinersPercent")
54
+ ] = None
55
+ r"""Percentage of tracked symbols that are declining. Use this with advancers percent for market breadth displays."""
56
+
57
+ timestamp: Optional[str] = None
58
+ r"""Data timestamp in ISO 8601 format; fractional seconds may be present (for example microseconds)."""
59
+
60
+ total_symbols: Annotated[Optional[int], pydantic.Field(alias="totalSymbols")] = None
61
+ r"""Total number of symbols included in the breadth calculation."""
62
+
63
+ unchanged: Optional[int] = None
64
+ r"""Number of unchanged stocks"""
65
+
66
+ @model_serializer(mode="wrap")
67
+ def serialize_model(self, handler):
68
+ optional_fields = set(
69
+ [
70
+ "advanceDeclineRatio",
71
+ "advancers",
72
+ "advancersPercent",
73
+ "decliners",
74
+ "declinersPercent",
75
+ "timestamp",
76
+ "totalSymbols",
77
+ "unchanged",
78
+ ]
79
+ )
80
+ serialized = handler(self)
81
+ m = {}
82
+
83
+ for n, f in type(self).model_fields.items():
84
+ k = f.alias or n
85
+ val = serialized.get(k, serialized.get(n))
86
+
87
+ if val != UNSET_SENTINEL:
88
+ if val is not None or k not in optional_fields:
89
+ m[k] = val
90
+
91
+ return m
92
+
93
+
94
+ try:
95
+ MarketBreadth.model_rebuild()
96
+ except NameError:
97
+ pass