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,75 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 7946a4a7b84e
3
+
4
+ from __future__ import annotations
5
+ from .screenclause import ScreenClause, ScreenClauseTypedDict
6
+ from enum import Enum
7
+ from finance_dev import models, utils
8
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
9
+ from pydantic import field_serializer, model_serializer
10
+ from typing import List, Optional
11
+ from typing_extensions import NotRequired, TypedDict
12
+
13
+
14
+ class ScreenGroupOperator(str, Enum, metaclass=utils.OpenEnumMeta):
15
+ r"""How the clauses inside this group are combined:
16
+ - `AND` — every clause in the group must match (logical AND).
17
+ - `OR` — at least one clause in the group must match (logical OR).
18
+ - `NOT` — negate the clause inside the group (logical NOT).
19
+ """
20
+
21
+ AND = "AND"
22
+ OR = "OR"
23
+ NOT = "NOT"
24
+
25
+
26
+ class ScreenGroupTypedDict(TypedDict):
27
+ r"""Nested group of clauses with its own operator (AND, OR, NOT)."""
28
+
29
+ clauses: NotRequired[List[ScreenClauseTypedDict]]
30
+ r"""Clauses combined by this group's operator."""
31
+ operator: NotRequired[ScreenGroupOperator]
32
+ r"""How the clauses inside this group are combined:
33
+ - `AND` — every clause in the group must match (logical AND).
34
+ - `OR` — at least one clause in the group must match (logical OR).
35
+ - `NOT` — negate the clause inside the group (logical NOT).
36
+ """
37
+
38
+
39
+ class ScreenGroup(BaseModel):
40
+ r"""Nested group of clauses with its own operator (AND, OR, NOT)."""
41
+
42
+ clauses: Optional[List[ScreenClause]] = None
43
+ r"""Clauses combined by this group's operator."""
44
+
45
+ operator: Optional[ScreenGroupOperator] = None
46
+ r"""How the clauses inside this group are combined:
47
+ - `AND` — every clause in the group must match (logical AND).
48
+ - `OR` — at least one clause in the group must match (logical OR).
49
+ - `NOT` — negate the clause inside the group (logical NOT).
50
+ """
51
+
52
+ @field_serializer("operator")
53
+ def serialize_operator(self, value):
54
+ if isinstance(value, str):
55
+ try:
56
+ return models.ScreenGroupOperator(value)
57
+ except ValueError:
58
+ return value
59
+ return value
60
+
61
+ @model_serializer(mode="wrap")
62
+ def serialize_model(self, handler):
63
+ optional_fields = set(["clauses", "operator"])
64
+ serialized = handler(self)
65
+ m = {}
66
+
67
+ for n, f in type(self).model_fields.items():
68
+ k = f.alias or n
69
+ val = serialized.get(k, serialized.get(n))
70
+
71
+ if val != UNSET_SENTINEL:
72
+ if val is not None or k not in optional_fields:
73
+ m[k] = val
74
+
75
+ return m
@@ -0,0 +1,40 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: a3b2095d32ba
3
+
4
+ from __future__ import annotations
5
+ from .etbsearchresponse import EtbSearchResponse, EtbSearchResponseTypedDict
6
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
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 SearchEtbSymbolsResponseTypedDict(TypedDict):
15
+ http_meta: HTTPMetadataTypedDict
16
+ etb_search_response: NotRequired[EtbSearchResponseTypedDict]
17
+ r"""Borrowability answers keyed by normalized (uppercase) symbol. There is no 404: a symbol that is not on the list is a valid `false` answer, not a missing resource."""
18
+
19
+
20
+ class SearchEtbSymbolsResponse(BaseModel):
21
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
22
+
23
+ etb_search_response: Optional[EtbSearchResponse] = None
24
+ r"""Borrowability answers keyed by normalized (uppercase) symbol. There is no 404: a symbol that is not on the list is a valid `false` answer, not a missing resource."""
25
+
26
+ @model_serializer(mode="wrap")
27
+ def serialize_model(self, handler):
28
+ optional_fields = set(["EtbSearchResponse"])
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,55 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: d3a556e6644a
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .indexsearchresponse import IndexSearchResponse, IndexSearchResponseTypedDict
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 Optional
12
+ from typing_extensions import Annotated, NotRequired, TypedDict
13
+
14
+
15
+ class SearchIndicesRequestTypedDict(TypedDict):
16
+ index_name: str
17
+ r"""Full or partial index name to search for. Case-insensitive substring match against the index display name (e.g. `S&P 500`, `Dow`, `NASDAQ`). Returns matching indices with their `symbol`, `indexGroup`, and `currency`."""
18
+
19
+
20
+ class SearchIndicesRequest(BaseModel):
21
+ index_name: Annotated[
22
+ str,
23
+ pydantic.Field(alias="indexName"),
24
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
25
+ ]
26
+ r"""Full or partial index name to search for. Case-insensitive substring match against the index display name (e.g. `S&P 500`, `Dow`, `NASDAQ`). Returns matching indices with their `symbol`, `indexGroup`, and `currency`."""
27
+
28
+
29
+ class SearchIndicesResponseTypedDict(TypedDict):
30
+ http_meta: HTTPMetadataTypedDict
31
+ index_search_response: NotRequired[IndexSearchResponseTypedDict]
32
+ r"""Successful response"""
33
+
34
+
35
+ class SearchIndicesResponse(BaseModel):
36
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
37
+
38
+ index_search_response: Optional[IndexSearchResponse] = None
39
+ r"""Successful response"""
40
+
41
+ @model_serializer(mode="wrap")
42
+ def serialize_model(self, handler):
43
+ optional_fields = set(["IndexSearchResponse"])
44
+ serialized = handler(self)
45
+ m = {}
46
+
47
+ for n, f in type(self).model_fields.items():
48
+ k = f.alias or n
49
+ val = serialized.get(k, serialized.get(n))
50
+
51
+ if val != UNSET_SENTINEL:
52
+ if val is not None or k not in optional_fields:
53
+ m[k] = val
54
+
55
+ return m
@@ -0,0 +1,158 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: a58135d5b066
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .logosearchresponse import LogoSearchResponse, LogoSearchResponseTypedDict
7
+ from enum import Enum
8
+ from finance_dev import models, utils
9
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
10
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
11
+ import pydantic
12
+ from pydantic import field_serializer, model_serializer
13
+ from typing import Optional
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
15
+
16
+
17
+ class SearchLogosSearchKeysType(str, Enum, metaclass=utils.OpenEnumMeta):
18
+ r"""Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
19
+ - `firm_id` — the value is a firm/company internal ID.
20
+ - `firm` — the value is the firm/company name.
21
+ """
22
+
23
+ SYMBOL = "symbol"
24
+ CIK = "cik"
25
+ CUSIP = "cusip"
26
+ ISIN = "isin"
27
+
28
+
29
+ class SearchLogosRequestTypedDict(TypedDict):
30
+ search_keys: str
31
+ r"""One or more values to look up, comma-separated. The format depends on `searchKeysType`. For example, with `searchKeysType=symbol` send `AAPL,MSFT`; with `searchKeysType=cik` send `0000320193,0000789019`."""
32
+ fields: str
33
+ r"""Comma-separated list of logo asset fields to return. Common values:
34
+ - `logo_light` — full logo for light backgrounds.
35
+ - `logo_dark` — full logo for dark backgrounds.
36
+ - `mark_light` — square/icon mark for light backgrounds.
37
+ - `mark_dark` — square/icon mark for dark backgrounds.
38
+
39
+ Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
40
+ """
41
+ search_keys_type: NotRequired[SearchLogosSearchKeysType]
42
+ r"""Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
43
+ - `firm_id` — the value is a firm/company internal ID.
44
+ - `firm` — the value is the firm/company name.
45
+ """
46
+ composite_auto: NotRequired[bool]
47
+ r"""Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo."""
48
+ composite_radius: NotRequired[int]
49
+ r"""Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style."""
50
+ scale: NotRequired[str]
51
+ r"""Image scale for returned logo URLs. Use higher scale values for high-density displays."""
52
+
53
+
54
+ class SearchLogosRequest(BaseModel):
55
+ search_keys: Annotated[
56
+ str,
57
+ pydantic.Field(alias="searchKeys"),
58
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
59
+ ]
60
+ r"""One or more values to look up, comma-separated. The format depends on `searchKeysType`. For example, with `searchKeysType=symbol` send `AAPL,MSFT`; with `searchKeysType=cik` send `0000320193,0000789019`."""
61
+
62
+ fields: Annotated[
63
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
64
+ ]
65
+ r"""Comma-separated list of logo asset fields to return. Common values:
66
+ - `logo_light` — full logo for light backgrounds.
67
+ - `logo_dark` — full logo for dark backgrounds.
68
+ - `mark_light` — square/icon mark for light backgrounds.
69
+ - `mark_dark` — square/icon mark for dark backgrounds.
70
+
71
+ Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
72
+ """
73
+
74
+ search_keys_type: Annotated[
75
+ Optional[SearchLogosSearchKeysType],
76
+ pydantic.Field(alias="searchKeysType"),
77
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
78
+ ] = None
79
+ r"""Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
80
+ - `firm_id` — the value is a firm/company internal ID.
81
+ - `firm` — the value is the firm/company name.
82
+ """
83
+
84
+ composite_auto: Annotated[
85
+ Optional[bool],
86
+ pydantic.Field(alias="compositeAuto"),
87
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
88
+ ] = False
89
+ r"""Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo."""
90
+
91
+ composite_radius: Annotated[
92
+ Optional[int],
93
+ pydantic.Field(alias="compositeRadius"),
94
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
95
+ ] = None
96
+ r"""Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style."""
97
+
98
+ scale: Annotated[
99
+ Optional[str],
100
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
101
+ ] = None
102
+ r"""Image scale for returned logo URLs. Use higher scale values for high-density displays."""
103
+
104
+ @field_serializer("search_keys_type")
105
+ def serialize_search_keys_type(self, value):
106
+ if isinstance(value, str):
107
+ try:
108
+ return models.SearchLogosSearchKeysType(value)
109
+ except ValueError:
110
+ return value
111
+ return value
112
+
113
+ @model_serializer(mode="wrap")
114
+ def serialize_model(self, handler):
115
+ optional_fields = set(
116
+ ["searchKeysType", "compositeAuto", "compositeRadius", "scale"]
117
+ )
118
+ serialized = handler(self)
119
+ m = {}
120
+
121
+ for n, f in type(self).model_fields.items():
122
+ k = f.alias or n
123
+ val = serialized.get(k, serialized.get(n))
124
+
125
+ if val != UNSET_SENTINEL:
126
+ if val is not None or k not in optional_fields:
127
+ m[k] = val
128
+
129
+ return m
130
+
131
+
132
+ class SearchLogosResponseTypedDict(TypedDict):
133
+ http_meta: HTTPMetadataTypedDict
134
+ logo_search_response: NotRequired[LogoSearchResponseTypedDict]
135
+ r"""Successful response"""
136
+
137
+
138
+ class SearchLogosResponse(BaseModel):
139
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
140
+
141
+ logo_search_response: Optional[LogoSearchResponse] = None
142
+ r"""Successful response"""
143
+
144
+ @model_serializer(mode="wrap")
145
+ def serialize_model(self, handler):
146
+ optional_fields = set(["LogoSearchResponse"])
147
+ serialized = handler(self)
148
+ m = {}
149
+
150
+ for n, f in type(self).model_fields.items():
151
+ k = f.alias or n
152
+ val = serialized.get(k, serialized.get(n))
153
+
154
+ if val != UNSET_SENTINEL:
155
+ if val is not None or k not in optional_fields:
156
+ m[k] = val
157
+
158
+ return m
@@ -0,0 +1,80 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 91ef950abcee
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .searchsymbolresponseitem import (
7
+ SearchSymbolResponseItem,
8
+ SearchSymbolResponseItemTypedDict,
9
+ )
10
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
11
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata
12
+ import pydantic
13
+ from pydantic import model_serializer
14
+ from typing import List, Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
16
+
17
+
18
+ class SearchMarketSymbolsRequestTypedDict(TypedDict):
19
+ query: str
20
+ r"""Text the user entered in symbol search. Use `AAPL` for stocks and indices, `.AAPL` for option-chain style searches, and `/ES` for futures. Do not use `!` as a special prefix; it is treated as literal text."""
21
+ limit: NotRequired[int]
22
+ r"""Maximum number of matches to return. Use a small number for autocomplete and a larger number for full search pages. Default is 20; minimum is 1; maximum is 100."""
23
+
24
+
25
+ class SearchMarketSymbolsRequest(BaseModel):
26
+ query: Annotated[
27
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
28
+ ]
29
+ r"""Text the user entered in symbol search. Use `AAPL` for stocks and indices, `.AAPL` for option-chain style searches, and `/ES` for futures. Do not use `!` as a special prefix; it is treated as literal text."""
30
+
31
+ limit: Annotated[
32
+ Optional[int],
33
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
34
+ ] = 20
35
+ r"""Maximum number of matches to return. Use a small number for autocomplete and a larger number for full search pages. Default is 20; minimum is 1; maximum is 100."""
36
+
37
+ @model_serializer(mode="wrap")
38
+ def serialize_model(self, handler):
39
+ optional_fields = set(["limit"])
40
+ serialized = handler(self)
41
+ m = {}
42
+
43
+ for n, f in type(self).model_fields.items():
44
+ k = f.alias or n
45
+ val = serialized.get(k, serialized.get(n))
46
+
47
+ if val != UNSET_SENTINEL:
48
+ if val is not None or k not in optional_fields:
49
+ m[k] = val
50
+
51
+ return m
52
+
53
+
54
+ class SearchMarketSymbolsResponseTypedDict(TypedDict):
55
+ http_meta: HTTPMetadataTypedDict
56
+ search_symbol_response: NotRequired[List[SearchSymbolResponseItemTypedDict]]
57
+ r"""Search results retrieved successfully"""
58
+
59
+
60
+ class SearchMarketSymbolsResponse(BaseModel):
61
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
62
+
63
+ search_symbol_response: Optional[List[SearchSymbolResponseItem]] = None
64
+ r"""Search results retrieved successfully"""
65
+
66
+ @model_serializer(mode="wrap")
67
+ def serialize_model(self, handler):
68
+ optional_fields = set(["SearchSymbolResponse"])
69
+ serialized = handler(self)
70
+ m = {}
71
+
72
+ for n, f in type(self).model_fields.items():
73
+ k = f.alias or n
74
+ val = serialized.get(k, serialized.get(n))
75
+
76
+ if val != UNSET_SENTINEL:
77
+ if val is not None or k not in optional_fields:
78
+ m[k] = val
79
+
80
+ return m
@@ -0,0 +1,232 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 4189fcac8df5
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .predmdbaseeventsearchresult import (
7
+ PredMdBaseEventSearchResult,
8
+ PredMdBaseEventSearchResultTypedDict,
9
+ )
10
+ from .predmdcontractsearchresult import (
11
+ PredMdContractSearchResult,
12
+ PredMdContractSearchResultTypedDict,
13
+ )
14
+ from .predmdeventsearchresult import (
15
+ PredMdEventSearchResult,
16
+ PredMdEventSearchResultTypedDict,
17
+ )
18
+ from enum import Enum
19
+ from finance_dev import models, utils
20
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
21
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata, get_discriminator
22
+ import pydantic
23
+ from pydantic import Discriminator, Tag, field_serializer, model_serializer
24
+ from typing import Callable, Optional, Union
25
+ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
26
+
27
+
28
+ class SearchType(str, Enum, metaclass=utils.OpenEnumMeta):
29
+ r"""Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response."""
30
+
31
+ CONTRACTS = "contracts"
32
+ EVENTS = "events"
33
+ BASE_EVENTS = "base-events"
34
+
35
+
36
+ class SearchRequestTypedDict(TypedDict):
37
+ type: NotRequired[SearchType]
38
+ r"""Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response."""
39
+ q: NotRequired[str]
40
+ r"""Full-text query over symbols, questions, event names and base-event specifications. Symbols split on _, - and . so `BPM 0822` finds `BPM_0822_1750`. Omit to browse, soonest last-trade date first."""
41
+ state: NotRequired[str]
42
+ r"""Contract state. Omitted means ACTIVE; `*` matches every state, including DELETED."""
43
+ base_event_id: NotRequired[str]
44
+ r"""Only contracts under this base event."""
45
+ event_id: NotRequired[str]
46
+ r"""Only contracts under this event."""
47
+ category: NotRequired[str]
48
+ r"""Only contracts in this category or any category under it. Takes a `path` from List Categories, URL-encoded. A bare level name such as `United States` matches nothing, because level names repeat under different parents."""
49
+ tradable: NotRequired[bool]
50
+ r"""Only tradable (true) or non-tradable (false) contracts."""
51
+ page: NotRequired[int]
52
+ r"""1-based page number; 0 or omitted means 1."""
53
+ per_page: NotRequired[int]
54
+ r"""Hits per page, counting whatever type returns; 0 or omitted means 20, values above 100 are clamped to 100."""
55
+
56
+
57
+ class SearchRequest(BaseModel):
58
+ type: Annotated[
59
+ Optional[SearchType],
60
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
61
+ ] = SearchType.CONTRACTS
62
+ r"""Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response."""
63
+
64
+ q: Annotated[
65
+ Optional[str],
66
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
67
+ ] = None
68
+ r"""Full-text query over symbols, questions, event names and base-event specifications. Symbols split on _, - and . so `BPM 0822` finds `BPM_0822_1750`. Omit to browse, soonest last-trade date first."""
69
+
70
+ state: Annotated[
71
+ Optional[str],
72
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
73
+ ] = None
74
+ r"""Contract state. Omitted means ACTIVE; `*` matches every state, including DELETED."""
75
+
76
+ base_event_id: Annotated[
77
+ Optional[str],
78
+ pydantic.Field(alias="baseEventId"),
79
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
80
+ ] = None
81
+ r"""Only contracts under this base event."""
82
+
83
+ event_id: Annotated[
84
+ Optional[str],
85
+ pydantic.Field(alias="eventId"),
86
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
87
+ ] = None
88
+ r"""Only contracts under this event."""
89
+
90
+ category: Annotated[
91
+ Optional[str],
92
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
93
+ ] = None
94
+ r"""Only contracts in this category or any category under it. Takes a `path` from List Categories, URL-encoded. A bare level name such as `United States` matches nothing, because level names repeat under different parents."""
95
+
96
+ tradable: Annotated[
97
+ Optional[bool],
98
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
99
+ ] = None
100
+ r"""Only tradable (true) or non-tradable (false) contracts."""
101
+
102
+ page: Annotated[
103
+ Optional[int],
104
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
105
+ ] = None
106
+ r"""1-based page number; 0 or omitted means 1."""
107
+
108
+ per_page: Annotated[
109
+ Optional[int],
110
+ pydantic.Field(alias="perPage"),
111
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
112
+ ] = None
113
+ r"""Hits per page, counting whatever type returns; 0 or omitted means 20, values above 100 are clamped to 100."""
114
+
115
+ @field_serializer("type")
116
+ def serialize_type(self, value):
117
+ if isinstance(value, str):
118
+ try:
119
+ return models.SearchType(value)
120
+ except ValueError:
121
+ return value
122
+ return value
123
+
124
+ @model_serializer(mode="wrap")
125
+ def serialize_model(self, handler):
126
+ optional_fields = set(
127
+ [
128
+ "type",
129
+ "q",
130
+ "state",
131
+ "baseEventId",
132
+ "eventId",
133
+ "category",
134
+ "tradable",
135
+ "page",
136
+ "perPage",
137
+ ]
138
+ )
139
+ serialized = handler(self)
140
+ m = {}
141
+
142
+ for n, f in type(self).model_fields.items():
143
+ k = f.alias or n
144
+ val = serialized.get(k, serialized.get(n))
145
+
146
+ if val != UNSET_SENTINEL:
147
+ if val is not None or k not in optional_fields:
148
+ m[k] = val
149
+
150
+ return m
151
+
152
+
153
+ SearchDataTypedDict = TypeAliasType(
154
+ "SearchDataTypedDict",
155
+ Union[
156
+ PredMdContractSearchResultTypedDict,
157
+ PredMdEventSearchResultTypedDict,
158
+ PredMdBaseEventSearchResultTypedDict,
159
+ ],
160
+ )
161
+
162
+
163
+ SearchData = Annotated[
164
+ Union[
165
+ Annotated[PredMdBaseEventSearchResult, Tag("base-events")],
166
+ Annotated[PredMdContractSearchResult, Tag("contracts")],
167
+ Annotated[PredMdEventSearchResult, Tag("events")],
168
+ ],
169
+ Discriminator(lambda m: get_discriminator(m, "type", "type")),
170
+ ]
171
+
172
+
173
+ class SearchResponseBodyTypedDict(TypedDict):
174
+ r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
175
+
176
+ success: bool
177
+ data: NotRequired[SearchDataTypedDict]
178
+
179
+
180
+ class SearchResponseBody(BaseModel):
181
+ r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
182
+
183
+ success: bool
184
+
185
+ data: Optional[SearchData] = None
186
+
187
+ @model_serializer(mode="wrap")
188
+ def serialize_model(self, handler):
189
+ optional_fields = set(["data"])
190
+ serialized = handler(self)
191
+ m = {}
192
+
193
+ for n, f in type(self).model_fields.items():
194
+ k = f.alias or n
195
+ val = serialized.get(k, serialized.get(n))
196
+
197
+ if val != UNSET_SENTINEL:
198
+ if val is not None or k not in optional_fields:
199
+ m[k] = val
200
+
201
+ return m
202
+
203
+
204
+ class SearchResponseTypedDict(TypedDict):
205
+ http_meta: HTTPMetadataTypedDict
206
+ object: NotRequired[SearchResponseBodyTypedDict]
207
+ r"""One page of hits; data.type says which shape they are"""
208
+
209
+
210
+ class SearchResponse(BaseModel):
211
+ next: Callable[[], Optional[SearchResponse]]
212
+
213
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
214
+
215
+ object: Optional[SearchResponseBody] = None
216
+ r"""One page of hits; data.type says which shape they are"""
217
+
218
+ @model_serializer(mode="wrap")
219
+ def serialize_model(self, handler):
220
+ optional_fields = set(["object"])
221
+ serialized = handler(self)
222
+ m = {}
223
+
224
+ for n, f in type(self).model_fields.items():
225
+ k = f.alias or n
226
+ val = serialized.get(k, serialized.get(n))
227
+
228
+ if val != UNSET_SENTINEL:
229
+ if val is not None or k not in optional_fields:
230
+ m[k] = val
231
+
232
+ return m