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,183 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: ec5daac4efb8
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, Nullable, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import List
9
+ from typing_extensions import Annotated, TypedDict
10
+
11
+
12
+ class SubsessionTypedDict(TypedDict):
13
+ description: str
14
+ r"""Description of the subsession."""
15
+ id: str
16
+ r"""Identifier of the subsession."""
17
+ session: str
18
+ r"""Trading hours of the subsession."""
19
+
20
+
21
+ class Subsession(BaseModel):
22
+ description: str
23
+ r"""Description of the subsession."""
24
+
25
+ id: str
26
+ r"""Identifier of the subsession."""
27
+
28
+ session: str
29
+ r"""Trading hours of the subsession."""
30
+
31
+
32
+ class SymbolInfoTypedDict(TypedDict):
33
+ r"""Chart symbol metadata, including supported resolutions, trading session and price scale."""
34
+
35
+ daily_multipliers: List[str]
36
+ r"""Available daily time multipliers"""
37
+ description: str
38
+ r"""Full description of the symbol/company"""
39
+ exchange: str
40
+ 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."""
41
+ format_: str
42
+ r"""Price format (usually 'price')"""
43
+ has_daily: bool
44
+ r"""Whether daily data is available"""
45
+ has_intraday: bool
46
+ r"""Whether intraday data is available"""
47
+ has_seconds: bool
48
+ r"""Whether seconds resolution is available"""
49
+ has_ticks: bool
50
+ r"""Whether tick data is available"""
51
+ has_weekly_and_monthly: bool
52
+ r"""Whether weekly and monthly data is available"""
53
+ intraday_multipliers: List[str]
54
+ r"""Available intraday time multipliers"""
55
+ listed_exchange: str
56
+ r"""Primary exchange where the symbol is listed"""
57
+ minmov: float
58
+ r"""Minimum price movement"""
59
+ monthly_multipliers: List[str]
60
+ r"""Available monthly time multipliers"""
61
+ name: str
62
+ r"""Symbol name"""
63
+ pricescale: int
64
+ r"""Price scale (e.g., 100 means divide price by 100)"""
65
+ session: str
66
+ r"""Trading session hours (e.g., '0930-1600')"""
67
+ subsession_id: str
68
+ r"""Identifier of the active subsession. Empty string when the symbol has no subsessions."""
69
+ subsessions: Nullable[List[SubsessionTypedDict]]
70
+ r"""Subsession definitions for the symbol. Null when the symbol has no subsessions."""
71
+ supported_resolutions: List[str]
72
+ r"""Resolutions supported for this symbol"""
73
+ ticker: str
74
+ r"""Symbol ticker"""
75
+ timezone: str
76
+ r"""Timezone of the exchange (e.g., 'America/New_York')"""
77
+ type: str
78
+ r"""Instrument class or provider category returned by the market data service. This value is not the trading order type."""
79
+ visible_plots_set: str
80
+ r"""Visible plots (e.g., 'ohlcv' for OHLC + Volume)"""
81
+ volume_precision: float
82
+ r"""Volume precision (decimal places)"""
83
+ weekly_multipliers: List[str]
84
+ r"""Available weekly time multipliers"""
85
+
86
+
87
+ class SymbolInfo(BaseModel):
88
+ r"""Chart symbol metadata, including supported resolutions, trading session and price scale."""
89
+
90
+ daily_multipliers: List[str]
91
+ r"""Available daily time multipliers"""
92
+
93
+ description: str
94
+ r"""Full description of the symbol/company"""
95
+
96
+ exchange: str
97
+ 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."""
98
+
99
+ format_: Annotated[str, pydantic.Field(alias="format")]
100
+ r"""Price format (usually 'price')"""
101
+
102
+ has_daily: bool
103
+ r"""Whether daily data is available"""
104
+
105
+ has_intraday: bool
106
+ r"""Whether intraday data is available"""
107
+
108
+ has_seconds: bool
109
+ r"""Whether seconds resolution is available"""
110
+
111
+ has_ticks: bool
112
+ r"""Whether tick data is available"""
113
+
114
+ has_weekly_and_monthly: bool
115
+ r"""Whether weekly and monthly data is available"""
116
+
117
+ intraday_multipliers: List[str]
118
+ r"""Available intraday time multipliers"""
119
+
120
+ listed_exchange: str
121
+ r"""Primary exchange where the symbol is listed"""
122
+
123
+ minmov: float
124
+ r"""Minimum price movement"""
125
+
126
+ monthly_multipliers: List[str]
127
+ r"""Available monthly time multipliers"""
128
+
129
+ name: str
130
+ r"""Symbol name"""
131
+
132
+ pricescale: int
133
+ r"""Price scale (e.g., 100 means divide price by 100)"""
134
+
135
+ session: str
136
+ r"""Trading session hours (e.g., '0930-1600')"""
137
+
138
+ subsession_id: str
139
+ r"""Identifier of the active subsession. Empty string when the symbol has no subsessions."""
140
+
141
+ subsessions: Nullable[List[Subsession]]
142
+ r"""Subsession definitions for the symbol. Null when the symbol has no subsessions."""
143
+
144
+ supported_resolutions: List[str]
145
+ r"""Resolutions supported for this symbol"""
146
+
147
+ ticker: str
148
+ r"""Symbol ticker"""
149
+
150
+ timezone: str
151
+ r"""Timezone of the exchange (e.g., 'America/New_York')"""
152
+
153
+ type: str
154
+ r"""Instrument class or provider category returned by the market data service. This value is not the trading order type."""
155
+
156
+ visible_plots_set: str
157
+ r"""Visible plots (e.g., 'ohlcv' for OHLC + Volume)"""
158
+
159
+ volume_precision: float
160
+ r"""Volume precision (decimal places)"""
161
+
162
+ weekly_multipliers: List[str]
163
+ r"""Available weekly time multipliers"""
164
+
165
+ @model_serializer(mode="wrap")
166
+ def serialize_model(self, handler):
167
+ serialized = handler(self)
168
+ m = {}
169
+
170
+ for n, f in type(self).model_fields.items():
171
+ k = f.alias or n
172
+ val = serialized.get(k, serialized.get(n))
173
+
174
+ if val != UNSET_SENTINEL:
175
+ m[k] = val
176
+
177
+ return m
178
+
179
+
180
+ try:
181
+ SymbolInfo.model_rebuild()
182
+ except NameError:
183
+ pass
@@ -0,0 +1,146 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 49cb8840cf95
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .logosyncresponse import LogoSyncResponse, LogoSyncResponseTypedDict
7
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
8
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
9
+ import pydantic
10
+ from pydantic import model_serializer
11
+ from typing import Callable, Optional
12
+ from typing_extensions import Annotated, NotRequired, TypedDict
13
+
14
+
15
+ class SyncLogosRequestTypedDict(TypedDict):
16
+ fields: str
17
+ r"""Comma-separated list of logo asset fields to return. Common values:
18
+ - `logo_light` — full logo for light backgrounds.
19
+ - `logo_dark` — full logo for dark backgrounds.
20
+ - `mark_light` — square/icon mark for light backgrounds.
21
+ - `mark_dark` — square/icon mark for dark backgrounds.
22
+
23
+ Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
24
+ """
25
+ updated_since: NotRequired[int]
26
+ r"""Only return logos updated since this Unix timestamp"""
27
+ composite_auto: NotRequired[bool]
28
+ r"""Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo."""
29
+ composite_radius: NotRequired[int]
30
+ r"""Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style."""
31
+ scale: NotRequired[str]
32
+ r"""Image scale for returned logo URLs. Use higher scale values for high-density displays."""
33
+ page: NotRequired[int]
34
+ r"""Zero-based page offset. Enter 0 for the first page of results."""
35
+ page_size: NotRequired[int]
36
+ r"""Number of results per page. Use this to control pagination size in list views. (1-1000)"""
37
+
38
+
39
+ class SyncLogosRequest(BaseModel):
40
+ fields: Annotated[
41
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
42
+ ]
43
+ r"""Comma-separated list of logo asset fields to return. Common values:
44
+ - `logo_light` — full logo for light backgrounds.
45
+ - `logo_dark` — full logo for dark backgrounds.
46
+ - `mark_light` — square/icon mark for light backgrounds.
47
+ - `mark_dark` — square/icon mark for dark backgrounds.
48
+
49
+ Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
50
+ """
51
+
52
+ updated_since: Annotated[
53
+ Optional[int],
54
+ pydantic.Field(alias="updatedSince"),
55
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
56
+ ] = None
57
+ r"""Only return logos updated since this Unix timestamp"""
58
+
59
+ composite_auto: Annotated[
60
+ Optional[bool],
61
+ pydantic.Field(alias="compositeAuto"),
62
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
63
+ ] = False
64
+ r"""Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo."""
65
+
66
+ composite_radius: Annotated[
67
+ Optional[int],
68
+ pydantic.Field(alias="compositeRadius"),
69
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
70
+ ] = None
71
+ r"""Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style."""
72
+
73
+ scale: Annotated[
74
+ Optional[str],
75
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
76
+ ] = None
77
+ r"""Image scale for returned logo URLs. Use higher scale values for high-density displays."""
78
+
79
+ page: Annotated[
80
+ Optional[int],
81
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
82
+ ] = None
83
+ r"""Zero-based page offset. Enter 0 for the first page of results."""
84
+
85
+ page_size: Annotated[
86
+ Optional[int],
87
+ pydantic.Field(alias="pageSize"),
88
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
89
+ ] = None
90
+ r"""Number of results per page. Use this to control pagination size in list views. (1-1000)"""
91
+
92
+ @model_serializer(mode="wrap")
93
+ def serialize_model(self, handler):
94
+ optional_fields = set(
95
+ [
96
+ "updatedSince",
97
+ "compositeAuto",
98
+ "compositeRadius",
99
+ "scale",
100
+ "page",
101
+ "pageSize",
102
+ ]
103
+ )
104
+ serialized = handler(self)
105
+ m = {}
106
+
107
+ for n, f in type(self).model_fields.items():
108
+ k = f.alias or n
109
+ val = serialized.get(k, serialized.get(n))
110
+
111
+ if val != UNSET_SENTINEL:
112
+ if val is not None or k not in optional_fields:
113
+ m[k] = val
114
+
115
+ return m
116
+
117
+
118
+ class SyncLogosResponseTypedDict(TypedDict):
119
+ http_meta: HTTPMetadataTypedDict
120
+ logo_sync_response: NotRequired[LogoSyncResponseTypedDict]
121
+ r"""Successful response"""
122
+
123
+
124
+ class SyncLogosResponse(BaseModel):
125
+ next: Callable[[], Optional[SyncLogosResponse]]
126
+
127
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
128
+
129
+ logo_sync_response: Optional[LogoSyncResponse] = None
130
+ r"""Successful response"""
131
+
132
+ @model_serializer(mode="wrap")
133
+ def serialize_model(self, handler):
134
+ optional_fields = set(["LogoSyncResponse"])
135
+ serialized = handler(self)
136
+ m = {}
137
+
138
+ for n, f in type(self).model_fields.items():
139
+ k = f.alias or n
140
+ val = serialized.get(k, serialized.get(n))
141
+
142
+ if val != UNSET_SENTINEL:
143
+ if val is not None or k not in optional_fields:
144
+ m[k] = val
145
+
146
+ return m
@@ -0,0 +1,43 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: d5c653e302da
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import List, Optional
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class TechnicalIndicatorResponseTypedDict(TypedDict):
12
+ r"""Technical indicator values for a symbol over a time range, as returned by Finnhub; the keys present depend on the requested indicator."""
13
+
14
+ sma: NotRequired[List[float]]
15
+ r"""Simple moving average values, one per timestamp in t."""
16
+ t: NotRequired[List[int]]
17
+ r"""Timestamps corresponding to each indicator value."""
18
+
19
+
20
+ class TechnicalIndicatorResponse(BaseModel):
21
+ r"""Technical indicator values for a symbol over a time range, as returned by Finnhub; the keys present depend on the requested indicator."""
22
+
23
+ sma: Optional[List[float]] = None
24
+ r"""Simple moving average values, one per timestamp in t."""
25
+
26
+ t: Optional[List[int]] = None
27
+ r"""Timestamps corresponding to each indicator value."""
28
+
29
+ @model_serializer(mode="wrap")
30
+ def serialize_model(self, handler):
31
+ optional_fields = set(["sma", "t"])
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,21 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 246217a13ad1
3
+
4
+ from __future__ import annotations
5
+ from enum import Enum
6
+ from finance_dev import utils
7
+
8
+
9
+ class TechnicalIndicatorType(str, Enum, metaclass=utils.OpenEnumMeta):
10
+ r"""Technical indicator slug (e.g. `sma`, `ema`, `rsi`, `macd`, `bbands`). Pass this with the indicator endpoint to compute that indicator over the requested bars."""
11
+
12
+ SMA = "sma"
13
+ EMA = "ema"
14
+ RSI = "rsi"
15
+ MACD = "macd"
16
+ BBANDS = "bbands"
17
+ STOCH = "stoch"
18
+ ADX = "adx"
19
+ CCI = "cci"
20
+ WILLR = "willr"
21
+ MFI = "mfi"
@@ -0,0 +1,249 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 0d3cf537973f
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 PointTypedDict(TypedDict):
13
+ aprice: NotRequired[float]
14
+ r"""Price at pattern point A."""
15
+ atime: NotRequired[int]
16
+ r"""Timestamp of pattern point A as an integer from the provider."""
17
+ bprice: NotRequired[int]
18
+ r"""Price at pattern point B."""
19
+ btime: NotRequired[int]
20
+ r"""Timestamp of pattern point B as an integer from the provider."""
21
+ cprice: NotRequired[int]
22
+ r"""Price at pattern point C."""
23
+ ctime: NotRequired[int]
24
+ r"""Timestamp of pattern point C as an integer from the provider."""
25
+ dprice: NotRequired[float]
26
+ r"""Price at pattern point D."""
27
+ dtime: NotRequired[int]
28
+ r"""Timestamp of pattern point D as an integer from the provider."""
29
+ end_price: NotRequired[int]
30
+ r"""Price at the end of the pattern."""
31
+ end_time: NotRequired[int]
32
+ r"""Timestamp of the end of the pattern as an integer from the provider."""
33
+ entry: NotRequired[int]
34
+ r"""Suggested entry price for the pattern."""
35
+ eprice: NotRequired[int]
36
+ r"""Price at pattern point E."""
37
+ etime: NotRequired[int]
38
+ r"""Timestamp of pattern point E as an integer from the provider."""
39
+ mature: NotRequired[int]
40
+ r"""Provider flag indicating whether the pattern is mature."""
41
+ patternname: NotRequired[str]
42
+ r"""Name of the detected pattern."""
43
+ patterntype: NotRequired[str]
44
+ r"""Type of the detected pattern."""
45
+ profit1: NotRequired[int]
46
+ r"""First profit target price for the pattern."""
47
+ profit2: NotRequired[int]
48
+ r"""Second profit target price for the pattern."""
49
+ sort_time: NotRequired[int]
50
+ r"""Provider timestamp used for sorting patterns."""
51
+ start_price: NotRequired[int]
52
+ r"""Price at the start of the pattern."""
53
+ start_time: NotRequired[int]
54
+ r"""Timestamp of the start of the pattern as an integer from the provider."""
55
+ status: NotRequired[str]
56
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
57
+ stoploss: NotRequired[int]
58
+ r"""Suggested stop-loss price for the pattern."""
59
+ symbol: NotRequired[str]
60
+ r"""Ticker symbol the pattern was detected for."""
61
+ terminal: NotRequired[int]
62
+ r"""Provider flag indicating whether the pattern is terminal."""
63
+
64
+
65
+ class Point(BaseModel):
66
+ aprice: Optional[float] = None
67
+ r"""Price at pattern point A."""
68
+
69
+ atime: Optional[int] = None
70
+ r"""Timestamp of pattern point A as an integer from the provider."""
71
+
72
+ bprice: Optional[int] = None
73
+ r"""Price at pattern point B."""
74
+
75
+ btime: Optional[int] = None
76
+ r"""Timestamp of pattern point B as an integer from the provider."""
77
+
78
+ cprice: Optional[int] = None
79
+ r"""Price at pattern point C."""
80
+
81
+ ctime: Optional[int] = None
82
+ r"""Timestamp of pattern point C as an integer from the provider."""
83
+
84
+ dprice: Optional[float] = None
85
+ r"""Price at pattern point D."""
86
+
87
+ dtime: Optional[int] = None
88
+ r"""Timestamp of pattern point D as an integer from the provider."""
89
+
90
+ end_price: Optional[int] = None
91
+ r"""Price at the end of the pattern."""
92
+
93
+ end_time: Optional[int] = None
94
+ r"""Timestamp of the end of the pattern as an integer from the provider."""
95
+
96
+ entry: Optional[int] = None
97
+ r"""Suggested entry price for the pattern."""
98
+
99
+ eprice: Optional[int] = None
100
+ r"""Price at pattern point E."""
101
+
102
+ etime: Optional[int] = None
103
+ r"""Timestamp of pattern point E as an integer from the provider."""
104
+
105
+ mature: Optional[int] = None
106
+ r"""Provider flag indicating whether the pattern is mature."""
107
+
108
+ patternname: Optional[str] = None
109
+ r"""Name of the detected pattern."""
110
+
111
+ patterntype: Optional[str] = None
112
+ r"""Type of the detected pattern."""
113
+
114
+ profit1: Optional[int] = None
115
+ r"""First profit target price for the pattern."""
116
+
117
+ profit2: Optional[int] = None
118
+ r"""Second profit target price for the pattern."""
119
+
120
+ sort_time: Annotated[Optional[int], pydantic.Field(alias="sortTime")] = None
121
+ r"""Provider timestamp used for sorting patterns."""
122
+
123
+ start_price: Optional[int] = None
124
+ r"""Price at the start of the pattern."""
125
+
126
+ start_time: Optional[int] = None
127
+ r"""Timestamp of the start of the pattern as an integer from the provider."""
128
+
129
+ status: Optional[str] = None
130
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
131
+
132
+ stoploss: Optional[int] = None
133
+ r"""Suggested stop-loss price for the pattern."""
134
+
135
+ symbol: Optional[str] = None
136
+ r"""Ticker symbol the pattern was detected for."""
137
+
138
+ terminal: Optional[int] = None
139
+ r"""Provider flag indicating whether the pattern is terminal."""
140
+
141
+ @model_serializer(mode="wrap")
142
+ def serialize_model(self, handler):
143
+ optional_fields = set(
144
+ [
145
+ "aprice",
146
+ "atime",
147
+ "bprice",
148
+ "btime",
149
+ "cprice",
150
+ "ctime",
151
+ "dprice",
152
+ "dtime",
153
+ "end_price",
154
+ "end_time",
155
+ "entry",
156
+ "eprice",
157
+ "etime",
158
+ "mature",
159
+ "patternname",
160
+ "patterntype",
161
+ "profit1",
162
+ "profit2",
163
+ "sortTime",
164
+ "start_price",
165
+ "start_time",
166
+ "status",
167
+ "stoploss",
168
+ "symbol",
169
+ "terminal",
170
+ ]
171
+ )
172
+ serialized = handler(self)
173
+ m = {}
174
+
175
+ for n, f in type(self).model_fields.items():
176
+ k = f.alias or n
177
+ val = serialized.get(k, serialized.get(n))
178
+
179
+ if val != UNSET_SENTINEL:
180
+ if val is not None or k not in optional_fields:
181
+ m[k] = val
182
+
183
+ return m
184
+
185
+
186
+ class TechnicalPatternsResponseDataTypedDict(TypedDict):
187
+ r"""Pattern recognition payload."""
188
+
189
+ points: NotRequired[List[PointTypedDict]]
190
+ r"""List of detected pattern points."""
191
+
192
+
193
+ class TechnicalPatternsResponseData(BaseModel):
194
+ r"""Pattern recognition payload."""
195
+
196
+ points: Optional[List[Point]] = None
197
+ r"""List of detected pattern points."""
198
+
199
+ @model_serializer(mode="wrap")
200
+ def serialize_model(self, handler):
201
+ optional_fields = set(["points"])
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 TechnicalPatternsResponseTypedDict(TypedDict):
217
+ r"""Chart patterns detected by Finnhub pattern recognition for a symbol and resolution."""
218
+
219
+ data: NotRequired[TechnicalPatternsResponseDataTypedDict]
220
+ r"""Pattern recognition payload."""
221
+
222
+
223
+ class TechnicalPatternsResponse(BaseModel):
224
+ r"""Chart patterns detected by Finnhub pattern recognition for a symbol and resolution."""
225
+
226
+ data: Optional[TechnicalPatternsResponseData] = None
227
+ r"""Pattern recognition payload."""
228
+
229
+ @model_serializer(mode="wrap")
230
+ def serialize_model(self, handler):
231
+ optional_fields = set(["data"])
232
+ serialized = handler(self)
233
+ m = {}
234
+
235
+ for n, f in type(self).model_fields.items():
236
+ k = f.alias or n
237
+ val = serialized.get(k, serialized.get(n))
238
+
239
+ if val != UNSET_SENTINEL:
240
+ if val is not None or k not in optional_fields:
241
+ m[k] = val
242
+
243
+ return m
244
+
245
+
246
+ try:
247
+ Point.model_rebuild()
248
+ except NameError:
249
+ pass
@@ -0,0 +1,26 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 9a857d7cfa6e
3
+
4
+ from __future__ import annotations
5
+ from enum import Enum
6
+ from finance_dev import utils
7
+
8
+
9
+ class TenderOfferIdentifierType(str, Enum, metaclass=utils.OpenEnumMeta):
10
+ r"""Which kind of identifier you are filtering by. Provide the matching value in the identifier field:
11
+ - `Symbol` — exchange ticker (e.g. `AAPL`).
12
+ - `CUSIP` — 9-character U.S./Canadian security identifier.
13
+ - `ISIN` — 12-character international identifier.
14
+ - `SEDOL` — 7-character UK identifier.
15
+ - `Valoren` — Swiss identifier.
16
+ - `FIGI` — Bloomberg Financial Instrument Global Identifier.
17
+ - `CompositeFIGI` — country-level composite FIGI.
18
+ """
19
+
20
+ SYMBOL = "Symbol"
21
+ CUSIP = "CUSIP"
22
+ ISIN = "ISIN"
23
+ SEDOL = "SEDOL"
24
+ VALOREN = "Valoren"
25
+ FIGI = "FIGI"
26
+ COMPOSITE_FIGI = "CompositeFIGI"