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,53 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 11d4ad6c3315
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .watchlist import Watchlist, WatchlistTypedDict
7
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
8
+ from finance_dev.utils import FieldMetadata, PathParamMetadata
9
+ import pydantic
10
+ from pydantic import model_serializer
11
+ from typing import Optional
12
+ from typing_extensions import Annotated, NotRequired, TypedDict
13
+
14
+
15
+ class GetConfigWatchlistByIDRequestTypedDict(TypedDict):
16
+ watchlist_id: int
17
+ r"""The numeric ID of the watchlist to retrieve. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
18
+
19
+
20
+ class GetConfigWatchlistByIDRequest(BaseModel):
21
+ watchlist_id: Annotated[
22
+ int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
23
+ ]
24
+ r"""The numeric ID of the watchlist to retrieve. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
25
+
26
+
27
+ class GetConfigWatchlistByIDResponseTypedDict(TypedDict):
28
+ http_meta: HTTPMetadataTypedDict
29
+ watchlist: NotRequired[WatchlistTypedDict]
30
+ r"""The requested watchlist."""
31
+
32
+
33
+ class GetConfigWatchlistByIDResponse(BaseModel):
34
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
35
+
36
+ watchlist: Optional[Watchlist] = None
37
+ r"""The requested watchlist."""
38
+
39
+ @model_serializer(mode="wrap")
40
+ def serialize_model(self, handler):
41
+ optional_fields = set(["Watchlist"])
42
+ serialized = handler(self)
43
+ m = {}
44
+
45
+ for n, f in type(self).model_fields.items():
46
+ k = f.alias or n
47
+ val = serialized.get(k, serialized.get(n))
48
+
49
+ if val != UNSET_SENTINEL:
50
+ if val is not None or k not in optional_fields:
51
+ m[k] = val
52
+
53
+ return m
@@ -0,0 +1,40 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 412df3b371f1
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .watchlistresponse import WatchlistResponse, WatchlistResponseTypedDict
7
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
8
+ import pydantic
9
+ from pydantic import model_serializer
10
+ from typing import Optional
11
+ from typing_extensions import Annotated, NotRequired, TypedDict
12
+
13
+
14
+ class GetConfigWatchlistsResponseTypedDict(TypedDict):
15
+ http_meta: HTTPMetadataTypedDict
16
+ watchlist_response: NotRequired[WatchlistResponseTypedDict]
17
+ r"""The authenticated user's watchlists."""
18
+
19
+
20
+ class GetConfigWatchlistsResponse(BaseModel):
21
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
22
+
23
+ watchlist_response: Optional[WatchlistResponse] = None
24
+ r"""The authenticated user's watchlists."""
25
+
26
+ @model_serializer(mode="wrap")
27
+ def serialize_model(self, handler):
28
+ optional_fields = set(["WatchlistResponse"])
29
+ serialized = handler(self)
30
+ m = {}
31
+
32
+ for n, f in type(self).model_fields.items():
33
+ k = f.alias or n
34
+ val = serialized.get(k, serialized.get(n))
35
+
36
+ if val != UNSET_SENTINEL:
37
+ if val is not None or k not in optional_fields:
38
+ m[k] = val
39
+
40
+ return m
@@ -0,0 +1,73 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 37517cca6619
3
+
4
+ from __future__ import annotations
5
+ from .congressionaltradingresponse import (
6
+ CongressionalTradingResponse,
7
+ CongressionalTradingResponseTypedDict,
8
+ )
9
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
10
+ from datetime import date
11
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
12
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
13
+ import pydantic
14
+ from pydantic import model_serializer
15
+ from typing import Optional
16
+ from typing_extensions import Annotated, NotRequired, TypedDict
17
+
18
+
19
+ class GetCongressionalTradingRequestTypedDict(TypedDict):
20
+ symbol: str
21
+ r"""Stock ticker to query. Send the plain uppercase symbol exactly as you'd type it on a brokerage screen, e.g. `AAPL`, `MSFT`."""
22
+ from_: date
23
+ r"""Start of the date window, inclusive. Format: `YYYY-MM-DD` (e.g. `2024-01-01`)."""
24
+ to: date
25
+ r"""End of the date window, inclusive. Format: `YYYY-MM-DD` (e.g. `2024-12-31`)."""
26
+
27
+
28
+ class GetCongressionalTradingRequest(BaseModel):
29
+ symbol: Annotated[
30
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
31
+ ]
32
+ r"""Stock ticker to query. Send the plain uppercase symbol exactly as you'd type it on a brokerage screen, e.g. `AAPL`, `MSFT`."""
33
+
34
+ from_: Annotated[
35
+ date,
36
+ pydantic.Field(alias="from"),
37
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
38
+ ]
39
+ r"""Start of the date window, inclusive. Format: `YYYY-MM-DD` (e.g. `2024-01-01`)."""
40
+
41
+ to: Annotated[
42
+ date, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
43
+ ]
44
+ r"""End of the date window, inclusive. Format: `YYYY-MM-DD` (e.g. `2024-12-31`)."""
45
+
46
+
47
+ class GetCongressionalTradingResponseTypedDict(TypedDict):
48
+ http_meta: HTTPMetadataTypedDict
49
+ congressional_trading_response: NotRequired[CongressionalTradingResponseTypedDict]
50
+ r"""Congressional trading data."""
51
+
52
+
53
+ class GetCongressionalTradingResponse(BaseModel):
54
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
55
+
56
+ congressional_trading_response: Optional[CongressionalTradingResponse] = None
57
+ r"""Congressional trading data."""
58
+
59
+ @model_serializer(mode="wrap")
60
+ def serialize_model(self, handler):
61
+ optional_fields = set(["CongressionalTradingResponse"])
62
+ serialized = handler(self)
63
+ m = {}
64
+
65
+ for n, f in type(self).model_fields.items():
66
+ k = f.alias or n
67
+ val = serialized.get(k, serialized.get(n))
68
+
69
+ if val != UNSET_SENTINEL:
70
+ if val is not None or k not in optional_fields:
71
+ m[k] = val
72
+
73
+ return m
@@ -0,0 +1,43 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 6776ce12b20b
3
+
4
+ from __future__ import annotations
5
+ from .covid19uscasesresponse import (
6
+ Covid19UsCasesResponse,
7
+ Covid19UsCasesResponseTypedDict,
8
+ )
9
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
10
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
11
+ import pydantic
12
+ from pydantic import model_serializer
13
+ from typing import Optional
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
15
+
16
+
17
+ class GetCovid19UsCasesResponseTypedDict(TypedDict):
18
+ http_meta: HTTPMetadataTypedDict
19
+ covid19_us_cases_response: NotRequired[Covid19UsCasesResponseTypedDict]
20
+ r"""COVID-19 US data."""
21
+
22
+
23
+ class GetCovid19UsCasesResponse(BaseModel):
24
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
25
+
26
+ covid19_us_cases_response: Optional[Covid19UsCasesResponse] = None
27
+ r"""COVID-19 US data."""
28
+
29
+ @model_serializer(mode="wrap")
30
+ def serialize_model(self, handler):
31
+ optional_fields = set(["Covid19UsCasesResponse"])
32
+ serialized = handler(self)
33
+ m = {}
34
+
35
+ for n, f in type(self).model_fields.items():
36
+ k = f.alias or n
37
+ val = serialized.get(k, serialized.get(n))
38
+
39
+ if val != UNSET_SENTINEL:
40
+ if val is not None or k not in optional_fields:
41
+ m[k] = val
42
+
43
+ return m
@@ -0,0 +1,92 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 0817b92a2360
3
+
4
+ from __future__ import annotations
5
+ from .dailymarketsummaryresponse import (
6
+ DailyMarketSummaryResponse,
7
+ DailyMarketSummaryResponseTypedDict,
8
+ )
9
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
10
+ from datetime import date
11
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
12
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
13
+ import pydantic
14
+ from pydantic import model_serializer
15
+ from typing import Optional
16
+ from typing_extensions import Annotated, NotRequired, TypedDict
17
+
18
+
19
+ class GetDailyMarketSummaryRequestTypedDict(TypedDict):
20
+ date_: date
21
+ r"""Date in YYYY-MM-DD format. Enter the specific calendar date you want to query."""
22
+ adjusted: NotRequired[bool]
23
+ r"""Whether to adjust historical prices for stock splits. Use true for normalized charting and false for raw market data."""
24
+ include_otc: NotRequired[bool]
25
+ r"""Whether to include over-the-counter securities. Use true only when your product needs OTC market coverage."""
26
+
27
+
28
+ class GetDailyMarketSummaryRequest(BaseModel):
29
+ date_: Annotated[
30
+ date,
31
+ pydantic.Field(alias="date"),
32
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
33
+ ]
34
+ r"""Date in YYYY-MM-DD format. Enter the specific calendar date you want to query."""
35
+
36
+ adjusted: Annotated[
37
+ Optional[bool],
38
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
39
+ ] = None
40
+ r"""Whether to adjust historical prices for stock splits. Use true for normalized charting and false for raw market data."""
41
+
42
+ include_otc: Annotated[
43
+ Optional[bool],
44
+ pydantic.Field(alias="includeOtc"),
45
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
46
+ ] = None
47
+ r"""Whether to include over-the-counter securities. Use true only when your product needs OTC market coverage."""
48
+
49
+ @model_serializer(mode="wrap")
50
+ def serialize_model(self, handler):
51
+ optional_fields = set(["adjusted", "includeOtc"])
52
+ serialized = handler(self)
53
+ m = {}
54
+
55
+ for n, f in type(self).model_fields.items():
56
+ k = f.alias or n
57
+ val = serialized.get(k, serialized.get(n))
58
+
59
+ if val != UNSET_SENTINEL:
60
+ if val is not None or k not in optional_fields:
61
+ m[k] = val
62
+
63
+ return m
64
+
65
+
66
+ class GetDailyMarketSummaryResponseTypedDict(TypedDict):
67
+ http_meta: HTTPMetadataTypedDict
68
+ daily_market_summary_response: NotRequired[DailyMarketSummaryResponseTypedDict]
69
+ r"""Successful response"""
70
+
71
+
72
+ class GetDailyMarketSummaryResponse(BaseModel):
73
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
74
+
75
+ daily_market_summary_response: Optional[DailyMarketSummaryResponse] = None
76
+ r"""Successful response"""
77
+
78
+ @model_serializer(mode="wrap")
79
+ def serialize_model(self, handler):
80
+ optional_fields = set(["DailyMarketSummaryResponse"])
81
+ serialized = handler(self)
82
+ m = {}
83
+
84
+ for n, f in type(self).model_fields.items():
85
+ k = f.alias or n
86
+ val = serialized.get(k, serialized.get(n))
87
+
88
+ if val != UNSET_SENTINEL:
89
+ if val is not None or k not in optional_fields:
90
+ m[k] = val
91
+
92
+ return m
@@ -0,0 +1,294 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: a96540b0eca8
3
+
4
+ from __future__ import annotations
5
+ from .dividendsresponse import DividendsResponse, DividendsResponseTypedDict
6
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
7
+ from datetime import date
8
+ from enum import Enum
9
+ from finance_dev import models, utils
10
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
11
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
12
+ import pydantic
13
+ from pydantic import field_serializer, model_serializer
14
+ from typing import Callable, Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
16
+
17
+
18
+ class DistributionType(str, Enum, metaclass=utils.OpenEnumMeta):
19
+ r"""Exact type: recurring, special, supplemental, irregular, unknown"""
20
+
21
+ RECURRING = "recurring"
22
+ SPECIAL = "special"
23
+ SUPPLEMENTAL = "supplemental"
24
+ IRREGULAR = "irregular"
25
+ UNKNOWN = "unknown"
26
+
27
+
28
+ class GetDividendsRequestTypedDict(TypedDict):
29
+ ticker: NotRequired[str]
30
+ r"""Single ticker symbol only, such as AAPL. Do not send a comma-separated list here; if you need multiple symbols, use `tickersAnyOf` instead."""
31
+ tickers_any_of: NotRequired[str]
32
+ r"""Comma-separated list of ticker symbols."""
33
+ ticker_from: NotRequired[str]
34
+ r"""Filter tickers >= this value (inclusive)"""
35
+ ticker_after: NotRequired[str]
36
+ r"""Filter tickers > this value (exclusive)"""
37
+ ticker_to: NotRequired[str]
38
+ r"""Filter tickers <= this value (inclusive)"""
39
+ ticker_before: NotRequired[str]
40
+ r"""Filter tickers < this value (exclusive)"""
41
+ ex_dividend_date: NotRequired[date]
42
+ r"""Exact ex-dividend date in YYYY-MM-DD format"""
43
+ ex_dividend_date_from: NotRequired[date]
44
+ r"""Ex-dividend start-date filter. Returns dividends with ex-dividend dates on or after this date."""
45
+ ex_dividend_date_after: NotRequired[date]
46
+ r"""Ex-dividend after-date filter. Returns dividends after this date, excluding the date itself."""
47
+ ex_dividend_date_to: NotRequired[date]
48
+ r"""Ex-dividend end-date filter. Returns dividends with ex-dividend dates on or before this date."""
49
+ ex_dividend_date_before: NotRequired[date]
50
+ r"""Ex-dividend before-date filter. Returns dividends before this date, excluding the date itself."""
51
+ frequency: NotRequired[int]
52
+ r"""Exact frequency (0=irregular, 1=annual, 4=quarterly, 12=monthly)"""
53
+ frequency_min: NotRequired[int]
54
+ r"""Dividend frequency lower-bound filter. Returns records with frequency greater than or equal to this value."""
55
+ frequency_above: NotRequired[int]
56
+ r"""Dividend frequency lower-bound filter. Returns records above this value, excluding the value itself."""
57
+ frequency_max: NotRequired[int]
58
+ r"""Dividend frequency upper-bound filter. Returns records with frequency less than or equal to this value."""
59
+ frequency_below: NotRequired[int]
60
+ r"""Dividend frequency upper-bound filter. Returns records below this value, excluding the value itself."""
61
+ distribution_type: NotRequired[DistributionType]
62
+ r"""Exact type: recurring, special, supplemental, irregular, unknown"""
63
+ distribution_types: NotRequired[str]
64
+ r"""Comma-separated list of distribution types"""
65
+ limit: NotRequired[int]
66
+ r"""Maximum number of results to return. Use smaller values for UI pages and larger values for exports within API limits. (1-5000)"""
67
+ sort: NotRequired[str]
68
+ r"""A comma-separated list of sort columns. For each column, append `.asc` or `.desc` to specify direction. Defaults to `ticker.asc` when not specified. Examples: `ticker.asc`, `ex_dividend_date.desc`, or `ticker.asc,ex_dividend_date.desc`."""
69
+ next: NotRequired[str]
70
+ r"""Pagination cursor from the previous response. Omit it on the first request, then send the returned cursor to fetch the next page."""
71
+
72
+
73
+ class GetDividendsRequest(BaseModel):
74
+ ticker: Annotated[
75
+ Optional[str],
76
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
77
+ ] = None
78
+ r"""Single ticker symbol only, such as AAPL. Do not send a comma-separated list here; if you need multiple symbols, use `tickersAnyOf` instead."""
79
+
80
+ tickers_any_of: Annotated[
81
+ Optional[str],
82
+ pydantic.Field(alias="tickersAnyOf"),
83
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
84
+ ] = None
85
+ r"""Comma-separated list of ticker symbols."""
86
+
87
+ ticker_from: Annotated[
88
+ Optional[str],
89
+ pydantic.Field(alias="tickerFrom"),
90
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
91
+ ] = None
92
+ r"""Filter tickers >= this value (inclusive)"""
93
+
94
+ ticker_after: Annotated[
95
+ Optional[str],
96
+ pydantic.Field(alias="tickerAfter"),
97
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
98
+ ] = None
99
+ r"""Filter tickers > this value (exclusive)"""
100
+
101
+ ticker_to: Annotated[
102
+ Optional[str],
103
+ pydantic.Field(alias="tickerTo"),
104
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
105
+ ] = None
106
+ r"""Filter tickers <= this value (inclusive)"""
107
+
108
+ ticker_before: Annotated[
109
+ Optional[str],
110
+ pydantic.Field(alias="tickerBefore"),
111
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
112
+ ] = None
113
+ r"""Filter tickers < this value (exclusive)"""
114
+
115
+ ex_dividend_date: Annotated[
116
+ Optional[date],
117
+ pydantic.Field(alias="exDividendDate"),
118
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
119
+ ] = None
120
+ r"""Exact ex-dividend date in YYYY-MM-DD format"""
121
+
122
+ ex_dividend_date_from: Annotated[
123
+ Optional[date],
124
+ pydantic.Field(alias="exDividendDateFrom"),
125
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
126
+ ] = None
127
+ r"""Ex-dividend start-date filter. Returns dividends with ex-dividend dates on or after this date."""
128
+
129
+ ex_dividend_date_after: Annotated[
130
+ Optional[date],
131
+ pydantic.Field(alias="exDividendDateAfter"),
132
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
133
+ ] = None
134
+ r"""Ex-dividend after-date filter. Returns dividends after this date, excluding the date itself."""
135
+
136
+ ex_dividend_date_to: Annotated[
137
+ Optional[date],
138
+ pydantic.Field(alias="exDividendDateTo"),
139
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
140
+ ] = None
141
+ r"""Ex-dividend end-date filter. Returns dividends with ex-dividend dates on or before this date."""
142
+
143
+ ex_dividend_date_before: Annotated[
144
+ Optional[date],
145
+ pydantic.Field(alias="exDividendDateBefore"),
146
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
147
+ ] = None
148
+ r"""Ex-dividend before-date filter. Returns dividends before this date, excluding the date itself."""
149
+
150
+ frequency: Annotated[
151
+ Optional[int],
152
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
153
+ ] = None
154
+ r"""Exact frequency (0=irregular, 1=annual, 4=quarterly, 12=monthly)"""
155
+
156
+ frequency_min: Annotated[
157
+ Optional[int],
158
+ pydantic.Field(alias="frequencyMin"),
159
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
160
+ ] = None
161
+ r"""Dividend frequency lower-bound filter. Returns records with frequency greater than or equal to this value."""
162
+
163
+ frequency_above: Annotated[
164
+ Optional[int],
165
+ pydantic.Field(alias="frequencyAbove"),
166
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
167
+ ] = None
168
+ r"""Dividend frequency lower-bound filter. Returns records above this value, excluding the value itself."""
169
+
170
+ frequency_max: Annotated[
171
+ Optional[int],
172
+ pydantic.Field(alias="frequencyMax"),
173
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
174
+ ] = None
175
+ r"""Dividend frequency upper-bound filter. Returns records with frequency less than or equal to this value."""
176
+
177
+ frequency_below: Annotated[
178
+ Optional[int],
179
+ pydantic.Field(alias="frequencyBelow"),
180
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
181
+ ] = None
182
+ r"""Dividend frequency upper-bound filter. Returns records below this value, excluding the value itself."""
183
+
184
+ distribution_type: Annotated[
185
+ Optional[DistributionType],
186
+ pydantic.Field(alias="distributionType"),
187
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
188
+ ] = None
189
+ r"""Exact type: recurring, special, supplemental, irregular, unknown"""
190
+
191
+ distribution_types: Annotated[
192
+ Optional[str],
193
+ pydantic.Field(alias="distributionTypes"),
194
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
195
+ ] = None
196
+ r"""Comma-separated list of distribution types"""
197
+
198
+ limit: Annotated[
199
+ Optional[int],
200
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
201
+ ] = None
202
+ r"""Maximum number of results to return. Use smaller values for UI pages and larger values for exports within API limits. (1-5000)"""
203
+
204
+ sort: Annotated[
205
+ Optional[str],
206
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
207
+ ] = None
208
+ r"""A comma-separated list of sort columns. For each column, append `.asc` or `.desc` to specify direction. Defaults to `ticker.asc` when not specified. Examples: `ticker.asc`, `ex_dividend_date.desc`, or `ticker.asc,ex_dividend_date.desc`."""
209
+
210
+ next: Annotated[
211
+ Optional[str],
212
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
213
+ ] = None
214
+ r"""Pagination cursor from the previous response. Omit it on the first request, then send the returned cursor to fetch the next page."""
215
+
216
+ @field_serializer("distribution_type")
217
+ def serialize_distribution_type(self, value):
218
+ if isinstance(value, str):
219
+ try:
220
+ return models.DistributionType(value)
221
+ except ValueError:
222
+ return value
223
+ return value
224
+
225
+ @model_serializer(mode="wrap")
226
+ def serialize_model(self, handler):
227
+ optional_fields = set(
228
+ [
229
+ "ticker",
230
+ "tickersAnyOf",
231
+ "tickerFrom",
232
+ "tickerAfter",
233
+ "tickerTo",
234
+ "tickerBefore",
235
+ "exDividendDate",
236
+ "exDividendDateFrom",
237
+ "exDividendDateAfter",
238
+ "exDividendDateTo",
239
+ "exDividendDateBefore",
240
+ "frequency",
241
+ "frequencyMin",
242
+ "frequencyAbove",
243
+ "frequencyMax",
244
+ "frequencyBelow",
245
+ "distributionType",
246
+ "distributionTypes",
247
+ "limit",
248
+ "sort",
249
+ "next",
250
+ ]
251
+ )
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
+ class GetDividendsResponseTypedDict(TypedDict):
267
+ http_meta: HTTPMetadataTypedDict
268
+ dividends_response: NotRequired[DividendsResponseTypedDict]
269
+ r"""Dividends data."""
270
+
271
+
272
+ class GetDividendsResponse(BaseModel):
273
+ next: Callable[[], Optional[GetDividendsResponse]]
274
+
275
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
276
+
277
+ dividends_response: Optional[DividendsResponse] = None
278
+ r"""Dividends data."""
279
+
280
+ @model_serializer(mode="wrap")
281
+ def serialize_model(self, handler):
282
+ optional_fields = set(["DividendsResponse"])
283
+ serialized = handler(self)
284
+ m = {}
285
+
286
+ for n, f in type(self).model_fields.items():
287
+ k = f.alias or n
288
+ val = serialized.get(k, serialized.get(n))
289
+
290
+ if val != UNSET_SENTINEL:
291
+ if val is not None or k not in optional_fields:
292
+ m[k] = val
293
+
294
+ return m
@@ -0,0 +1,87 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 00625a320be1
3
+
4
+ from __future__ import annotations
5
+ from .earningrelease import EarningRelease, EarningReleaseTypedDict
6
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
7
+ from datetime import date
8
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
9
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
10
+ import pydantic
11
+ from pydantic import model_serializer
12
+ from typing import List, Optional
13
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
+
15
+
16
+ class GetEarningsCalendarRequestTypedDict(TypedDict):
17
+ from_: date
18
+ r"""Start date in YYYY-MM-DD format. Enter the first date to include in the research window."""
19
+ to: date
20
+ r"""End date in YYYY-MM-DD format. Enter the last date to include in the research window."""
21
+ symbol: NotRequired[str]
22
+ r"""Optional stock symbol to filter results. If not provided, returns earnings for all symbols."""
23
+
24
+
25
+ class GetEarningsCalendarRequest(BaseModel):
26
+ from_: Annotated[
27
+ date,
28
+ pydantic.Field(alias="from"),
29
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
30
+ ]
31
+ r"""Start date in YYYY-MM-DD format. Enter the first date to include in the research window."""
32
+
33
+ to: Annotated[
34
+ date, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
35
+ ]
36
+ r"""End date in YYYY-MM-DD format. Enter the last date to include in the research window."""
37
+
38
+ symbol: Annotated[
39
+ Optional[str],
40
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
41
+ ] = None
42
+ r"""Optional stock symbol to filter results. If not provided, returns earnings for all symbols."""
43
+
44
+ @model_serializer(mode="wrap")
45
+ def serialize_model(self, handler):
46
+ optional_fields = set(["symbol"])
47
+ serialized = handler(self)
48
+ m = {}
49
+
50
+ for n, f in type(self).model_fields.items():
51
+ k = f.alias or n
52
+ val = serialized.get(k, serialized.get(n))
53
+
54
+ if val != UNSET_SENTINEL:
55
+ if val is not None or k not in optional_fields:
56
+ m[k] = val
57
+
58
+ return m
59
+
60
+
61
+ class GetEarningsCalendarResponseTypedDict(TypedDict):
62
+ http_meta: HTTPMetadataTypedDict
63
+ get_earnings_calendar_response: NotRequired[List[EarningReleaseTypedDict]]
64
+ r"""Earnings calendar data retrieved successfully"""
65
+
66
+
67
+ class GetEarningsCalendarResponse(BaseModel):
68
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
69
+
70
+ get_earnings_calendar_response: Optional[List[EarningRelease]] = None
71
+ r"""Earnings calendar data retrieved successfully"""
72
+
73
+ @model_serializer(mode="wrap")
74
+ def serialize_model(self, handler):
75
+ optional_fields = set(["GetEarningsCalendarResponse"])
76
+ serialized = handler(self)
77
+ m = {}
78
+
79
+ for n, f in type(self).model_fields.items():
80
+ k = f.alias or n
81
+ val = serialized.get(k, serialized.get(n))
82
+
83
+ if val != UNSET_SENTINEL:
84
+ if val is not None or k not in optional_fields:
85
+ m[k] = val
86
+
87
+ return m