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,74 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: f16e7d1d496a
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class OwnershipRecordTypedDict(TypedDict):
13
+ r"""Ownership record of an institutional investor or fund in a security."""
14
+
15
+ change: NotRequired[int]
16
+ r"""Change in share count from previous filing"""
17
+ filing_date: NotRequired[str]
18
+ r"""Date of the regulatory filing in YYYY-MM-DD format"""
19
+ name: NotRequired[str]
20
+ r"""Name of the institutional investor or fund"""
21
+ percent_of_shares: NotRequired[float]
22
+ r"""Percentage of total outstanding shares held"""
23
+ share: NotRequired[int]
24
+ r"""Number of shares held"""
25
+ source: NotRequired[str]
26
+ r"""Source of the ownership data (e.g., 13F, 13G)"""
27
+
28
+
29
+ class OwnershipRecord(BaseModel):
30
+ r"""Ownership record of an institutional investor or fund in a security."""
31
+
32
+ change: Optional[int] = None
33
+ r"""Change in share count from previous filing"""
34
+
35
+ filing_date: Annotated[Optional[str], pydantic.Field(alias="filingDate")] = None
36
+ r"""Date of the regulatory filing in YYYY-MM-DD format"""
37
+
38
+ name: Optional[str] = None
39
+ r"""Name of the institutional investor or fund"""
40
+
41
+ percent_of_shares: Annotated[
42
+ Optional[float], pydantic.Field(alias="percentOfShares")
43
+ ] = None
44
+ r"""Percentage of total outstanding shares held"""
45
+
46
+ share: Optional[int] = None
47
+ r"""Number of shares held"""
48
+
49
+ source: Optional[str] = None
50
+ r"""Source of the ownership data (e.g., 13F, 13G)"""
51
+
52
+ @model_serializer(mode="wrap")
53
+ def serialize_model(self, handler):
54
+ optional_fields = set(
55
+ ["change", "filingDate", "name", "percentOfShares", "share", "source"]
56
+ )
57
+ serialized = handler(self)
58
+ m = {}
59
+
60
+ for n, f in type(self).model_fields.items():
61
+ k = f.alias or n
62
+ val = serialized.get(k, serialized.get(n))
63
+
64
+ if val != UNSET_SENTINEL:
65
+ if val is not None or k not in optional_fields:
66
+ m[k] = val
67
+
68
+ return m
69
+
70
+
71
+ try:
72
+ OwnershipRecord.model_rebuild()
73
+ except NameError:
74
+ pass
@@ -0,0 +1,40 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 386a2b651761
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .ordresponse import OrdResponse, OrdResponseTypedDict
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 PlaceOrderResponseTypedDict(TypedDict):
15
+ http_meta: HTTPMetadataTypedDict
16
+ ord_response: NotRequired[OrdResponseTypedDict]
17
+ r"""Order placed successfully"""
18
+
19
+
20
+ class PlaceOrderResponse(BaseModel):
21
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
22
+
23
+ ord_response: Optional[OrdResponse] = None
24
+ r"""Order placed successfully"""
25
+
26
+ @model_serializer(mode="wrap")
27
+ def serialize_model(self, handler):
28
+ optional_fields = set(["OrdResponse"])
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,335 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 783019a66278
3
+
4
+ from __future__ import annotations
5
+ from .orderrequesttimeinforceenum import OrderRequestTimeInForceEnum
6
+ from .ordersideenum import OrderSideEnum
7
+ from .ordertypeenum import OrderTypeEnum
8
+ from .ordleg import OrdLeg, OrdLegTypedDict
9
+ from finance_dev import models
10
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
11
+ import pydantic
12
+ from pydantic import field_serializer, model_serializer
13
+ from typing import List, Optional, Union
14
+ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
15
+
16
+
17
+ class PlaceOrdRequest2TypedDict(TypedDict):
18
+ qty: str
19
+ r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
20
+ side: OrderSideEnum
21
+ r"""Which direction to trade in. Pick one:
22
+ - `BUY` — buying shares or contracts (opens a long position or closes an existing short).
23
+ - `SELL` — selling shares or contracts you already hold (closes a long position).
24
+ - `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
25
+ - `BUY_TO_COVER` — buying shares to close an open short position.
26
+ """
27
+ symbol: str
28
+ r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
29
+ time_in_force: OrderRequestTimeInForceEnum
30
+ r"""How long the order should stay alive before automatically cancelling. Pick one:
31
+ - `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
32
+ - `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
33
+ - `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
34
+ - `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
35
+ - `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
36
+ - `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
37
+ - `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
38
+ """
39
+ trading_account_id: str
40
+ r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
41
+ type: OrderTypeEnum
42
+ r"""How the order is priced. Pick one:
43
+ - `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
44
+ - `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
45
+ - `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
46
+ - `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
47
+ """
48
+ account_id: NotRequired[str]
49
+ r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
50
+ client_id: NotRequired[str]
51
+ r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
52
+ currency: NotRequired[str]
53
+ r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
54
+ legs: NotRequired[List[OrdLegTypedDict]]
55
+ r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
56
+ price: NotRequired[str]
57
+ r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
58
+ stop_price: NotRequired[str]
59
+ r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
60
+
61
+
62
+ class PlaceOrdRequest2(BaseModel):
63
+ qty: str
64
+ r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
65
+
66
+ side: OrderSideEnum
67
+ r"""Which direction to trade in. Pick one:
68
+ - `BUY` — buying shares or contracts (opens a long position or closes an existing short).
69
+ - `SELL` — selling shares or contracts you already hold (closes a long position).
70
+ - `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
71
+ - `BUY_TO_COVER` — buying shares to close an open short position.
72
+ """
73
+
74
+ symbol: str
75
+ r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
76
+
77
+ time_in_force: Annotated[
78
+ OrderRequestTimeInForceEnum, pydantic.Field(alias="timeInForce")
79
+ ]
80
+ r"""How long the order should stay alive before automatically cancelling. Pick one:
81
+ - `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
82
+ - `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
83
+ - `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
84
+ - `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
85
+ - `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
86
+ - `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
87
+ - `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
88
+ """
89
+
90
+ trading_account_id: Annotated[str, pydantic.Field(alias="tradingAccountId")]
91
+ r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
92
+
93
+ type: OrderTypeEnum
94
+ r"""How the order is priced. Pick one:
95
+ - `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
96
+ - `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
97
+ - `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
98
+ - `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
99
+ """
100
+
101
+ account_id: Annotated[Optional[str], pydantic.Field(alias="accountId")] = None
102
+ r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
103
+
104
+ client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
105
+ r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
106
+
107
+ currency: Optional[str] = None
108
+ r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
109
+
110
+ legs: Optional[List[OrdLeg]] = None
111
+ r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
112
+
113
+ price: Optional[str] = None
114
+ r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
115
+
116
+ stop_price: Annotated[Optional[str], pydantic.Field(alias="stopPrice")] = None
117
+ r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
118
+
119
+ @field_serializer("side")
120
+ def serialize_side(self, value):
121
+ if isinstance(value, str):
122
+ try:
123
+ return models.OrderSideEnum(value)
124
+ except ValueError:
125
+ return value
126
+ return value
127
+
128
+ @field_serializer("time_in_force")
129
+ def serialize_time_in_force(self, value):
130
+ if isinstance(value, str):
131
+ try:
132
+ return models.OrderRequestTimeInForceEnum(value)
133
+ except ValueError:
134
+ return value
135
+ return value
136
+
137
+ @field_serializer("type")
138
+ def serialize_type(self, value):
139
+ if isinstance(value, str):
140
+ try:
141
+ return models.OrderTypeEnum(value)
142
+ except ValueError:
143
+ return value
144
+ return value
145
+
146
+ @model_serializer(mode="wrap")
147
+ def serialize_model(self, handler):
148
+ optional_fields = set(
149
+ ["accountId", "clientId", "currency", "legs", "price", "stopPrice"]
150
+ )
151
+ serialized = handler(self)
152
+ m = {}
153
+
154
+ for n, f in type(self).model_fields.items():
155
+ k = f.alias or n
156
+ val = serialized.get(k, serialized.get(n))
157
+
158
+ if val != UNSET_SENTINEL:
159
+ if val is not None or k not in optional_fields:
160
+ m[k] = val
161
+
162
+ return m
163
+
164
+
165
+ class PlaceOrdRequest1TypedDict(TypedDict):
166
+ account_id: str
167
+ r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
168
+ qty: str
169
+ r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
170
+ side: OrderSideEnum
171
+ r"""Which direction to trade in. Pick one:
172
+ - `BUY` — buying shares or contracts (opens a long position or closes an existing short).
173
+ - `SELL` — selling shares or contracts you already hold (closes a long position).
174
+ - `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
175
+ - `BUY_TO_COVER` — buying shares to close an open short position.
176
+ """
177
+ symbol: str
178
+ r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
179
+ time_in_force: OrderRequestTimeInForceEnum
180
+ r"""How long the order should stay alive before automatically cancelling. Pick one:
181
+ - `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
182
+ - `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
183
+ - `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
184
+ - `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
185
+ - `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
186
+ - `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
187
+ - `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
188
+ """
189
+ type: OrderTypeEnum
190
+ r"""How the order is priced. Pick one:
191
+ - `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
192
+ - `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
193
+ - `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
194
+ - `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
195
+ """
196
+ client_id: NotRequired[str]
197
+ r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
198
+ currency: NotRequired[str]
199
+ r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
200
+ legs: NotRequired[List[OrdLegTypedDict]]
201
+ r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
202
+ price: NotRequired[str]
203
+ r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
204
+ stop_price: NotRequired[str]
205
+ r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
206
+ trading_account_id: NotRequired[str]
207
+ r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
208
+
209
+
210
+ class PlaceOrdRequest1(BaseModel):
211
+ account_id: Annotated[str, pydantic.Field(alias="accountId")]
212
+ r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
213
+
214
+ qty: str
215
+ r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
216
+
217
+ side: OrderSideEnum
218
+ r"""Which direction to trade in. Pick one:
219
+ - `BUY` — buying shares or contracts (opens a long position or closes an existing short).
220
+ - `SELL` — selling shares or contracts you already hold (closes a long position).
221
+ - `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
222
+ - `BUY_TO_COVER` — buying shares to close an open short position.
223
+ """
224
+
225
+ symbol: str
226
+ r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
227
+
228
+ time_in_force: Annotated[
229
+ OrderRequestTimeInForceEnum, pydantic.Field(alias="timeInForce")
230
+ ]
231
+ r"""How long the order should stay alive before automatically cancelling. Pick one:
232
+ - `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
233
+ - `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
234
+ - `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
235
+ - `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
236
+ - `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
237
+ - `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
238
+ - `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
239
+ """
240
+
241
+ type: OrderTypeEnum
242
+ r"""How the order is priced. Pick one:
243
+ - `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
244
+ - `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
245
+ - `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
246
+ - `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
247
+ """
248
+
249
+ client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
250
+ r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
251
+
252
+ currency: Optional[str] = None
253
+ r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
254
+
255
+ legs: Optional[List[OrdLeg]] = None
256
+ r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
257
+
258
+ price: Optional[str] = None
259
+ r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
260
+
261
+ stop_price: Annotated[Optional[str], pydantic.Field(alias="stopPrice")] = None
262
+ r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
263
+
264
+ trading_account_id: Annotated[
265
+ Optional[str], pydantic.Field(alias="tradingAccountId")
266
+ ] = None
267
+ r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
268
+
269
+ @field_serializer("side")
270
+ def serialize_side(self, value):
271
+ if isinstance(value, str):
272
+ try:
273
+ return models.OrderSideEnum(value)
274
+ except ValueError:
275
+ return value
276
+ return value
277
+
278
+ @field_serializer("time_in_force")
279
+ def serialize_time_in_force(self, value):
280
+ if isinstance(value, str):
281
+ try:
282
+ return models.OrderRequestTimeInForceEnum(value)
283
+ except ValueError:
284
+ return value
285
+ return value
286
+
287
+ @field_serializer("type")
288
+ def serialize_type(self, value):
289
+ if isinstance(value, str):
290
+ try:
291
+ return models.OrderTypeEnum(value)
292
+ except ValueError:
293
+ return value
294
+ return value
295
+
296
+ @model_serializer(mode="wrap")
297
+ def serialize_model(self, handler):
298
+ optional_fields = set(
299
+ ["clientId", "currency", "legs", "price", "stopPrice", "tradingAccountId"]
300
+ )
301
+ serialized = handler(self)
302
+ m = {}
303
+
304
+ for n, f in type(self).model_fields.items():
305
+ k = f.alias or n
306
+ val = serialized.get(k, serialized.get(n))
307
+
308
+ if val != UNSET_SENTINEL:
309
+ if val is not None or k not in optional_fields:
310
+ m[k] = val
311
+
312
+ return m
313
+
314
+
315
+ PlaceOrdRequestUnionTypedDict = TypeAliasType(
316
+ "PlaceOrdRequestUnionTypedDict",
317
+ Union[PlaceOrdRequest1TypedDict, PlaceOrdRequest2TypedDict],
318
+ )
319
+ r"""Request body for placing a live order through the core trading API. Use Preview Order first when available, then submit this only after the user confirms the trade."""
320
+
321
+
322
+ PlaceOrdRequestUnion = TypeAliasType(
323
+ "PlaceOrdRequestUnion", Union[PlaceOrdRequest1, PlaceOrdRequest2]
324
+ )
325
+ r"""Request body for placing a live order through the core trading API. Use Preview Order first when available, then submit this only after the user confirms the trade."""
326
+
327
+
328
+ try:
329
+ PlaceOrdRequest2.model_rebuild()
330
+ except NameError:
331
+ pass
332
+ try:
333
+ PlaceOrdRequest1.model_rebuild()
334
+ except NameError:
335
+ pass
@@ -0,0 +1,114 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: c3714f3a8ed1
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .predordersorder import PredOrdersOrder, PredOrdersOrderTypedDict
7
+ from .predordersplaceorderrequest import (
8
+ PredOrdersPlaceOrderRequest,
9
+ PredOrdersPlaceOrderRequestTypedDict,
10
+ )
11
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
12
+ from finance_dev.utils import FieldMetadata, HeaderMetadata, RequestMetadata
13
+ import pydantic
14
+ from pydantic import model_serializer
15
+ from typing import Optional
16
+ from typing_extensions import Annotated, NotRequired, TypedDict
17
+
18
+
19
+ class PlacePredictionOrderRequestTypedDict(TypedDict):
20
+ pred_orders_place_order_request: PredOrdersPlaceOrderRequestTypedDict
21
+ idempotency_key: NotRequired[str]
22
+ r"""Makes a retry safe. A placement repeating a key you already used returns the order that key placed and places nothing new. The same key with different order terms returns `400` `INVALID_ORDER`. Without it, every request is a new order. Send it at most once."""
23
+
24
+
25
+ class PlacePredictionOrderRequest(BaseModel):
26
+ pred_orders_place_order_request: Annotated[
27
+ PredOrdersPlaceOrderRequest,
28
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
29
+ ]
30
+
31
+ idempotency_key: Annotated[
32
+ Optional[str],
33
+ pydantic.Field(alias="Idempotency-Key"),
34
+ FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
35
+ ] = None
36
+ r"""Makes a retry safe. A placement repeating a key you already used returns the order that key placed and places nothing new. The same key with different order terms returns `400` `INVALID_ORDER`. Without it, every request is a new order. Send it at most once."""
37
+
38
+ @model_serializer(mode="wrap")
39
+ def serialize_model(self, handler):
40
+ optional_fields = set(["Idempotency-Key"])
41
+ serialized = handler(self)
42
+ m = {}
43
+
44
+ for n, f in type(self).model_fields.items():
45
+ k = f.alias or n
46
+ val = serialized.get(k, serialized.get(n))
47
+
48
+ if val != UNSET_SENTINEL:
49
+ if val is not None or k not in optional_fields:
50
+ m[k] = val
51
+
52
+ return m
53
+
54
+
55
+ class PlacePredictionOrderResponseBodyTypedDict(TypedDict):
56
+ r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
57
+
58
+ success: bool
59
+ data: NotRequired[PredOrdersOrderTypedDict]
60
+ r"""An order as recorded by order entry. Submitted terms (`quantity`, `price`, …) never change; working terms (`workingQuantity`, `workingPrice`, …) are the venue's answer. Optional decimals and timestamps are omitted when absent, never zero."""
61
+
62
+
63
+ class PlacePredictionOrderResponseBody(BaseModel):
64
+ r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
65
+
66
+ success: bool
67
+
68
+ data: Optional[PredOrdersOrder] = None
69
+ r"""An order as recorded by order entry. Submitted terms (`quantity`, `price`, …) never change; working terms (`workingQuantity`, `workingPrice`, …) are the venue's answer. Optional decimals and timestamps are omitted when absent, never zero."""
70
+
71
+ @model_serializer(mode="wrap")
72
+ def serialize_model(self, handler):
73
+ optional_fields = set(["data"])
74
+ serialized = handler(self)
75
+ m = {}
76
+
77
+ for n, f in type(self).model_fields.items():
78
+ k = f.alias or n
79
+ val = serialized.get(k, serialized.get(n))
80
+
81
+ if val != UNSET_SENTINEL:
82
+ if val is not None or k not in optional_fields:
83
+ m[k] = val
84
+
85
+ return m
86
+
87
+
88
+ class PlacePredictionOrderResponseTypedDict(TypedDict):
89
+ http_meta: HTTPMetadataTypedDict
90
+ object: NotRequired[PlacePredictionOrderResponseBodyTypedDict]
91
+ r"""Order accepted for sending. `state` is normally `pending_new`."""
92
+
93
+
94
+ class PlacePredictionOrderResponse(BaseModel):
95
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
96
+
97
+ object: Optional[PlacePredictionOrderResponseBody] = None
98
+ r"""Order accepted for sending. `state` is normally `pending_new`."""
99
+
100
+ @model_serializer(mode="wrap")
101
+ def serialize_model(self, handler):
102
+ optional_fields = set(["object"])
103
+ serialized = handler(self)
104
+ m = {}
105
+
106
+ for n, f in type(self).model_fields.items():
107
+ k = f.alias or n
108
+ val = serialized.get(k, serialized.get(n))
109
+
110
+ if val != UNSET_SENTINEL:
111
+ if val is not None or k not in optional_fields:
112
+ m[k] = val
113
+
114
+ return m
@@ -0,0 +1,62 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: e6263eeafa39
3
+
4
+ from __future__ import annotations
5
+ from datetime import datetime
6
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
7
+ import pydantic
8
+ from pydantic import model_serializer
9
+ from typing import List, Optional
10
+ from typing_extensions import Annotated, NotRequired, TypedDict
11
+
12
+
13
+ class PredMdBaseEventTypedDict(TypedDict):
14
+ r"""Top-level 4castex base event (e.g. UNR, HORC)."""
15
+
16
+ base_event_id: str
17
+ first_seen_at: datetime
18
+ last_synced_at: datetime
19
+ category_levels: NotRequired[List[str]]
20
+ r"""The venue's categories for this base event, broadest first: category, subcategory, then region. A few base events have fewer levels. Level names repeat under different parents, so identify a category by its whole path. Omitted until the venue's product listing has been synced for this base event."""
21
+ display_name: NotRequired[str]
22
+ r"""The venue's name for this base event. Omitted until the venue's product listing has been synced for this base event."""
23
+
24
+
25
+ class PredMdBaseEvent(BaseModel):
26
+ r"""Top-level 4castex base event (e.g. UNR, HORC)."""
27
+
28
+ base_event_id: Annotated[str, pydantic.Field(alias="baseEventId")]
29
+
30
+ first_seen_at: Annotated[datetime, pydantic.Field(alias="firstSeenAt")]
31
+
32
+ last_synced_at: Annotated[datetime, pydantic.Field(alias="lastSyncedAt")]
33
+
34
+ category_levels: Annotated[
35
+ Optional[List[str]], pydantic.Field(alias="categoryLevels")
36
+ ] = None
37
+ r"""The venue's categories for this base event, broadest first: category, subcategory, then region. A few base events have fewer levels. Level names repeat under different parents, so identify a category by its whole path. Omitted until the venue's product listing has been synced for this base event."""
38
+
39
+ display_name: Annotated[Optional[str], pydantic.Field(alias="displayName")] = None
40
+ r"""The venue's name for this base event. Omitted until the venue's product listing has been synced for this base event."""
41
+
42
+ @model_serializer(mode="wrap")
43
+ def serialize_model(self, handler):
44
+ optional_fields = set(["categoryLevels", "displayName"])
45
+ serialized = handler(self)
46
+ m = {}
47
+
48
+ for n, f in type(self).model_fields.items():
49
+ k = f.alias or n
50
+ val = serialized.get(k, serialized.get(n))
51
+
52
+ if val != UNSET_SENTINEL:
53
+ if val is not None or k not in optional_fields:
54
+ m[k] = val
55
+
56
+ return m
57
+
58
+
59
+ try:
60
+ PredMdBaseEvent.model_rebuild()
61
+ except NameError:
62
+ pass