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,852 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: f705e3d3456f
3
+
4
+ from .basesdk import BaseSDK
5
+ from datetime import datetime
6
+ from finance_dev import errors, models, utils
7
+ from finance_dev._hooks import HookContext
8
+ from finance_dev.types import OptionalNullable, UNSET
9
+ from finance_dev.utils.unmarshal_json_response import unmarshal_json_response
10
+ from typing import Any, Mapping, Optional
11
+
12
+
13
+ class PredictionsOrders(BaseSDK):
14
+ def list_prediction_orders(
15
+ self,
16
+ *,
17
+ status: Optional[str] = None,
18
+ account_id: Optional[str] = None,
19
+ symbol: Optional[str] = None,
20
+ limit: Optional[int] = 50,
21
+ cursor: Optional[str] = None,
22
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
23
+ server_url: Optional[str] = None,
24
+ timeout_ms: Optional[int] = None,
25
+ http_headers: Optional[Mapping[str, str]] = None,
26
+ ) -> models.ListPredictionOrdersResponse:
27
+ r"""List prediction orders
28
+
29
+ **Closed beta.** Available only to accounts enrolled in the prediction-market orders closed beta. Returns the authenticated user's prediction-market orders, newest first, one page at a time.
30
+
31
+ If set, this operation will use `client_id` from the global security.
32
+
33
+ :param status: Comma-separated order states, or `open` for every state an order can still rest or execute in (`pending_new`, `new`, `partially_filled`, `unknown`). An unknown state returns `400`.
34
+ :param account_id: Only orders on this account.
35
+ :param symbol: Only orders on this contract symbol.
36
+ :param limit: Orders per page. Values above 200 are clamped to 200. `0`, a negative value, or a non-integer returns `400`.
37
+ :param cursor: `nextCursor` from the previous page.
38
+ :param retries: Override the default retry configuration for this method
39
+ :param server_url: Override the default server URL for this method
40
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
41
+ :param http_headers: Additional headers to set or replace on requests.
42
+ """
43
+ base_url = None
44
+ url_variables = None
45
+ if timeout_ms is None:
46
+ timeout_ms = self.sdk_configuration.timeout_ms
47
+
48
+ if timeout_ms is None:
49
+ timeout_ms = 30000
50
+
51
+ if server_url is not None:
52
+ base_url = server_url
53
+ else:
54
+ base_url = self._get_url(base_url, url_variables)
55
+
56
+ request = models.ListPredictionOrdersRequest(
57
+ status=status,
58
+ account_id=account_id,
59
+ symbol=symbol,
60
+ limit=limit,
61
+ cursor=cursor,
62
+ )
63
+
64
+ req = self._build_request(
65
+ method="GET",
66
+ path="/v1/predictions/orders",
67
+ base_url=base_url,
68
+ url_variables=url_variables,
69
+ request=request,
70
+ request_body_required=False,
71
+ request_has_path_params=False,
72
+ request_has_query_params=True,
73
+ user_agent_header="user-agent",
74
+ accept_header_value="application/json",
75
+ http_headers=http_headers,
76
+ security=self.sdk_configuration.security,
77
+ allow_empty_value=None,
78
+ allowed_fields=["client_id"],
79
+ timeout_ms=timeout_ms,
80
+ )
81
+
82
+ if retries == UNSET:
83
+ if self.sdk_configuration.retry_config is not UNSET:
84
+ retries = self.sdk_configuration.retry_config
85
+ else:
86
+ retries = utils.RetryConfig(
87
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
88
+ )
89
+
90
+ retry_config = None
91
+ if isinstance(retries, utils.RetryConfig):
92
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
93
+
94
+ http_res = self.do_request(
95
+ hook_ctx=HookContext(
96
+ config=self.sdk_configuration,
97
+ base_url=base_url or "",
98
+ operation_id="listPredictionOrders",
99
+ oauth2_scopes=[],
100
+ security_source=self.sdk_configuration.security,
101
+ tags=["Prediction Orders"],
102
+ extensions=None,
103
+ ),
104
+ request=req,
105
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
106
+ retry_config=retry_config,
107
+ )
108
+
109
+ response_data: Any = None
110
+ if utils.match_response(http_res, "200", "application/json"):
111
+ return models.ListPredictionOrdersResponse(
112
+ object=unmarshal_json_response(
113
+ Optional[models.ListPredictionOrdersResponseBody], http_res
114
+ ),
115
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
116
+ )
117
+ if utils.match_response(http_res, "400", "application/json"):
118
+ response_data = unmarshal_json_response(
119
+ errors.PredOrdersErrorEnvelopeData, http_res
120
+ )
121
+ response_data.http_meta = models.HTTPMetadata(
122
+ request=req, response=http_res
123
+ )
124
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
125
+ if utils.match_response(http_res, "401", "application/json"):
126
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
127
+ response_data.http_meta = models.HTTPMetadata(
128
+ request=req, response=http_res
129
+ )
130
+ raise errors.Unauthorized(response_data, http_res)
131
+ if utils.match_response(http_res, "500", "application/json"):
132
+ response_data = unmarshal_json_response(
133
+ errors.PredOrdersErrorEnvelopeData, http_res
134
+ )
135
+ response_data.http_meta = models.HTTPMetadata(
136
+ request=req, response=http_res
137
+ )
138
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
139
+ if utils.match_response(http_res, "4XX", "*"):
140
+ http_res_text = utils.stream_to_text(http_res)
141
+ raise errors.APIError("API error occurred", http_res, http_res_text)
142
+ if utils.match_response(http_res, "5XX", "*"):
143
+ http_res_text = utils.stream_to_text(http_res)
144
+ raise errors.APIError("API error occurred", http_res, http_res_text)
145
+
146
+ raise errors.APIError("Unexpected response received", http_res)
147
+
148
+ async def list_prediction_orders_async(
149
+ self,
150
+ *,
151
+ status: Optional[str] = None,
152
+ account_id: Optional[str] = None,
153
+ symbol: Optional[str] = None,
154
+ limit: Optional[int] = 50,
155
+ cursor: Optional[str] = None,
156
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
157
+ server_url: Optional[str] = None,
158
+ timeout_ms: Optional[int] = None,
159
+ http_headers: Optional[Mapping[str, str]] = None,
160
+ ) -> models.ListPredictionOrdersResponse:
161
+ r"""List prediction orders
162
+
163
+ **Closed beta.** Available only to accounts enrolled in the prediction-market orders closed beta. Returns the authenticated user's prediction-market orders, newest first, one page at a time.
164
+
165
+ If set, this operation will use `client_id` from the global security.
166
+
167
+ :param status: Comma-separated order states, or `open` for every state an order can still rest or execute in (`pending_new`, `new`, `partially_filled`, `unknown`). An unknown state returns `400`.
168
+ :param account_id: Only orders on this account.
169
+ :param symbol: Only orders on this contract symbol.
170
+ :param limit: Orders per page. Values above 200 are clamped to 200. `0`, a negative value, or a non-integer returns `400`.
171
+ :param cursor: `nextCursor` from the previous page.
172
+ :param retries: Override the default retry configuration for this method
173
+ :param server_url: Override the default server URL for this method
174
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
175
+ :param http_headers: Additional headers to set or replace on requests.
176
+ """
177
+ base_url = None
178
+ url_variables = None
179
+ if timeout_ms is None:
180
+ timeout_ms = self.sdk_configuration.timeout_ms
181
+
182
+ if timeout_ms is None:
183
+ timeout_ms = 30000
184
+
185
+ if server_url is not None:
186
+ base_url = server_url
187
+ else:
188
+ base_url = self._get_url(base_url, url_variables)
189
+
190
+ request = models.ListPredictionOrdersRequest(
191
+ status=status,
192
+ account_id=account_id,
193
+ symbol=symbol,
194
+ limit=limit,
195
+ cursor=cursor,
196
+ )
197
+
198
+ req = self._build_request_async(
199
+ method="GET",
200
+ path="/v1/predictions/orders",
201
+ base_url=base_url,
202
+ url_variables=url_variables,
203
+ request=request,
204
+ request_body_required=False,
205
+ request_has_path_params=False,
206
+ request_has_query_params=True,
207
+ user_agent_header="user-agent",
208
+ accept_header_value="application/json",
209
+ http_headers=http_headers,
210
+ security=self.sdk_configuration.security,
211
+ allow_empty_value=None,
212
+ allowed_fields=["client_id"],
213
+ timeout_ms=timeout_ms,
214
+ )
215
+
216
+ if retries == UNSET:
217
+ if self.sdk_configuration.retry_config is not UNSET:
218
+ retries = self.sdk_configuration.retry_config
219
+ else:
220
+ retries = utils.RetryConfig(
221
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
222
+ )
223
+
224
+ retry_config = None
225
+ if isinstance(retries, utils.RetryConfig):
226
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
227
+
228
+ http_res = await self.do_request_async(
229
+ hook_ctx=HookContext(
230
+ config=self.sdk_configuration,
231
+ base_url=base_url or "",
232
+ operation_id="listPredictionOrders",
233
+ oauth2_scopes=[],
234
+ security_source=self.sdk_configuration.security,
235
+ tags=["Prediction Orders"],
236
+ extensions=None,
237
+ ),
238
+ request=req,
239
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
240
+ retry_config=retry_config,
241
+ )
242
+
243
+ response_data: Any = None
244
+ if utils.match_response(http_res, "200", "application/json"):
245
+ return models.ListPredictionOrdersResponse(
246
+ object=unmarshal_json_response(
247
+ Optional[models.ListPredictionOrdersResponseBody], http_res
248
+ ),
249
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
250
+ )
251
+ if utils.match_response(http_res, "400", "application/json"):
252
+ response_data = unmarshal_json_response(
253
+ errors.PredOrdersErrorEnvelopeData, http_res
254
+ )
255
+ response_data.http_meta = models.HTTPMetadata(
256
+ request=req, response=http_res
257
+ )
258
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
259
+ if utils.match_response(http_res, "401", "application/json"):
260
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
261
+ response_data.http_meta = models.HTTPMetadata(
262
+ request=req, response=http_res
263
+ )
264
+ raise errors.Unauthorized(response_data, http_res)
265
+ if utils.match_response(http_res, "500", "application/json"):
266
+ response_data = unmarshal_json_response(
267
+ errors.PredOrdersErrorEnvelopeData, http_res
268
+ )
269
+ response_data.http_meta = models.HTTPMetadata(
270
+ request=req, response=http_res
271
+ )
272
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
273
+ if utils.match_response(http_res, "4XX", "*"):
274
+ http_res_text = await utils.stream_to_text_async(http_res)
275
+ raise errors.APIError("API error occurred", http_res, http_res_text)
276
+ if utils.match_response(http_res, "5XX", "*"):
277
+ http_res_text = await utils.stream_to_text_async(http_res)
278
+ raise errors.APIError("API error occurred", http_res, http_res_text)
279
+
280
+ raise errors.APIError("Unexpected response received", http_res)
281
+
282
+ def place_prediction_order(
283
+ self,
284
+ *,
285
+ account_id: str,
286
+ order_type: models.OrderType,
287
+ outcome: models.PredOrdersPlaceOrderRequestOutcome,
288
+ quantity: str,
289
+ side: models.PredOrdersPlaceOrderRequestSide,
290
+ symbol: str,
291
+ time_in_force: models.TimeInForce,
292
+ idempotency_key: Optional[str] = None,
293
+ client_order_ref: Optional[str] = None,
294
+ expire_time: Optional[datetime] = None,
295
+ price: Optional[str] = None,
296
+ stop_px: Optional[str] = None,
297
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
298
+ server_url: Optional[str] = None,
299
+ timeout_ms: Optional[int] = None,
300
+ http_headers: Optional[Mapping[str, str]] = None,
301
+ ) -> models.PlacePredictionOrderResponse:
302
+ r"""Place prediction order
303
+
304
+ **Closed beta.** Available only to accounts enrolled in the prediction-market orders closed beta. Places a prediction-market order for the authenticated user. Returns `202` as soon as the order is on its way to the venue, normally in state `pending_new`. Read the venue's answer back with Get Prediction Order.
305
+
306
+ If set, this operation will use `client_id` from the global security.
307
+
308
+ :param account_id: The account to place the order on.
309
+ :param order_type:
310
+ :param outcome: The binary outcome the order trades. It is never inferred from `side`.
311
+ :param quantity: Number of contracts as an exact decimal string. Must be greater than zero.
312
+ :param side:
313
+ :param symbol: Prediction-market contract symbol, as returned by search or Get Event Contracts.
314
+ :param time_in_force:
315
+ :param idempotency_key: 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.
316
+ :param client_order_ref: Your own reference for the order, unique per account. Reusing one returns `409` `CLIENT_ORDER_REF_IN_USE`; it is not a retry key. To retry safely, use the `Idempotency-Key` header.
317
+ :param expire_time: Required when `timeInForce` is `gtd`.
318
+ :param price: Limit price as an exact decimal string. Required for `limit` and `stop_limit`.
319
+ :param stop_px: Stop price as an exact decimal string. Required for `stop` and `stop_limit`.
320
+ :param retries: Override the default retry configuration for this method
321
+ :param server_url: Override the default server URL for this method
322
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
323
+ :param http_headers: Additional headers to set or replace on requests.
324
+ """
325
+ base_url = None
326
+ url_variables = None
327
+ if timeout_ms is None:
328
+ timeout_ms = self.sdk_configuration.timeout_ms
329
+
330
+ if timeout_ms is None:
331
+ timeout_ms = 30000
332
+
333
+ if server_url is not None:
334
+ base_url = server_url
335
+ else:
336
+ base_url = self._get_url(base_url, url_variables)
337
+
338
+ request = models.PlacePredictionOrderRequest(
339
+ idempotency_key=idempotency_key,
340
+ pred_orders_place_order_request=models.PredOrdersPlaceOrderRequest(
341
+ account_id=account_id,
342
+ client_order_ref=client_order_ref,
343
+ expire_time=expire_time,
344
+ order_type=order_type,
345
+ outcome=outcome,
346
+ price=price,
347
+ quantity=quantity,
348
+ side=side,
349
+ stop_px=stop_px,
350
+ symbol=symbol,
351
+ time_in_force=time_in_force,
352
+ ),
353
+ )
354
+
355
+ req = self._build_request(
356
+ method="POST",
357
+ path="/v1/predictions/orders",
358
+ base_url=base_url,
359
+ url_variables=url_variables,
360
+ request=request,
361
+ request_body_required=True,
362
+ request_has_path_params=False,
363
+ request_has_query_params=True,
364
+ user_agent_header="user-agent",
365
+ accept_header_value="application/json",
366
+ http_headers=http_headers,
367
+ security=self.sdk_configuration.security,
368
+ get_serialized_body=lambda: utils.serialize_request_body(
369
+ request.pred_orders_place_order_request,
370
+ False,
371
+ False,
372
+ "json",
373
+ models.PredOrdersPlaceOrderRequest,
374
+ ),
375
+ allow_empty_value=None,
376
+ allowed_fields=["client_id"],
377
+ timeout_ms=timeout_ms,
378
+ )
379
+
380
+ if retries == UNSET:
381
+ if self.sdk_configuration.retry_config is not UNSET:
382
+ retries = self.sdk_configuration.retry_config
383
+ else:
384
+ retries = utils.RetryConfig(
385
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
386
+ )
387
+
388
+ retry_config = None
389
+ if isinstance(retries, utils.RetryConfig):
390
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
391
+
392
+ http_res = self.do_request(
393
+ hook_ctx=HookContext(
394
+ config=self.sdk_configuration,
395
+ base_url=base_url or "",
396
+ operation_id="placePredictionOrder",
397
+ oauth2_scopes=[],
398
+ security_source=self.sdk_configuration.security,
399
+ tags=["Prediction Orders"],
400
+ extensions=None,
401
+ ),
402
+ request=req,
403
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
404
+ retry_config=retry_config,
405
+ )
406
+
407
+ response_data: Any = None
408
+ if utils.match_response(http_res, "202", "application/json"):
409
+ return models.PlacePredictionOrderResponse(
410
+ object=unmarshal_json_response(
411
+ Optional[models.PlacePredictionOrderResponseBody], http_res
412
+ ),
413
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
414
+ )
415
+ if utils.match_response(http_res, "401", "application/json"):
416
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
417
+ response_data.http_meta = models.HTTPMetadata(
418
+ request=req, response=http_res
419
+ )
420
+ raise errors.Unauthorized(response_data, http_res)
421
+ if utils.match_response(http_res, ["400", "409", "429"], "application/json"):
422
+ response_data = unmarshal_json_response(
423
+ errors.PredOrdersErrorEnvelopeData, http_res
424
+ )
425
+ response_data.http_meta = models.HTTPMetadata(
426
+ request=req, response=http_res
427
+ )
428
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
429
+ if utils.match_response(http_res, ["500", "503", "504"], "application/json"):
430
+ response_data = unmarshal_json_response(
431
+ errors.PredOrdersErrorEnvelopeData, http_res
432
+ )
433
+ response_data.http_meta = models.HTTPMetadata(
434
+ request=req, response=http_res
435
+ )
436
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
437
+ if utils.match_response(http_res, "4XX", "*"):
438
+ http_res_text = utils.stream_to_text(http_res)
439
+ raise errors.APIError("API error occurred", http_res, http_res_text)
440
+ if utils.match_response(http_res, "5XX", "*"):
441
+ http_res_text = utils.stream_to_text(http_res)
442
+ raise errors.APIError("API error occurred", http_res, http_res_text)
443
+
444
+ raise errors.APIError("Unexpected response received", http_res)
445
+
446
+ async def place_prediction_order_async(
447
+ self,
448
+ *,
449
+ account_id: str,
450
+ order_type: models.OrderType,
451
+ outcome: models.PredOrdersPlaceOrderRequestOutcome,
452
+ quantity: str,
453
+ side: models.PredOrdersPlaceOrderRequestSide,
454
+ symbol: str,
455
+ time_in_force: models.TimeInForce,
456
+ idempotency_key: Optional[str] = None,
457
+ client_order_ref: Optional[str] = None,
458
+ expire_time: Optional[datetime] = None,
459
+ price: Optional[str] = None,
460
+ stop_px: Optional[str] = None,
461
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
462
+ server_url: Optional[str] = None,
463
+ timeout_ms: Optional[int] = None,
464
+ http_headers: Optional[Mapping[str, str]] = None,
465
+ ) -> models.PlacePredictionOrderResponse:
466
+ r"""Place prediction order
467
+
468
+ **Closed beta.** Available only to accounts enrolled in the prediction-market orders closed beta. Places a prediction-market order for the authenticated user. Returns `202` as soon as the order is on its way to the venue, normally in state `pending_new`. Read the venue's answer back with Get Prediction Order.
469
+
470
+ If set, this operation will use `client_id` from the global security.
471
+
472
+ :param account_id: The account to place the order on.
473
+ :param order_type:
474
+ :param outcome: The binary outcome the order trades. It is never inferred from `side`.
475
+ :param quantity: Number of contracts as an exact decimal string. Must be greater than zero.
476
+ :param side:
477
+ :param symbol: Prediction-market contract symbol, as returned by search or Get Event Contracts.
478
+ :param time_in_force:
479
+ :param idempotency_key: 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.
480
+ :param client_order_ref: Your own reference for the order, unique per account. Reusing one returns `409` `CLIENT_ORDER_REF_IN_USE`; it is not a retry key. To retry safely, use the `Idempotency-Key` header.
481
+ :param expire_time: Required when `timeInForce` is `gtd`.
482
+ :param price: Limit price as an exact decimal string. Required for `limit` and `stop_limit`.
483
+ :param stop_px: Stop price as an exact decimal string. Required for `stop` and `stop_limit`.
484
+ :param retries: Override the default retry configuration for this method
485
+ :param server_url: Override the default server URL for this method
486
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
487
+ :param http_headers: Additional headers to set or replace on requests.
488
+ """
489
+ base_url = None
490
+ url_variables = None
491
+ if timeout_ms is None:
492
+ timeout_ms = self.sdk_configuration.timeout_ms
493
+
494
+ if timeout_ms is None:
495
+ timeout_ms = 30000
496
+
497
+ if server_url is not None:
498
+ base_url = server_url
499
+ else:
500
+ base_url = self._get_url(base_url, url_variables)
501
+
502
+ request = models.PlacePredictionOrderRequest(
503
+ idempotency_key=idempotency_key,
504
+ pred_orders_place_order_request=models.PredOrdersPlaceOrderRequest(
505
+ account_id=account_id,
506
+ client_order_ref=client_order_ref,
507
+ expire_time=expire_time,
508
+ order_type=order_type,
509
+ outcome=outcome,
510
+ price=price,
511
+ quantity=quantity,
512
+ side=side,
513
+ stop_px=stop_px,
514
+ symbol=symbol,
515
+ time_in_force=time_in_force,
516
+ ),
517
+ )
518
+
519
+ req = self._build_request_async(
520
+ method="POST",
521
+ path="/v1/predictions/orders",
522
+ base_url=base_url,
523
+ url_variables=url_variables,
524
+ request=request,
525
+ request_body_required=True,
526
+ request_has_path_params=False,
527
+ request_has_query_params=True,
528
+ user_agent_header="user-agent",
529
+ accept_header_value="application/json",
530
+ http_headers=http_headers,
531
+ security=self.sdk_configuration.security,
532
+ get_serialized_body=lambda: utils.serialize_request_body(
533
+ request.pred_orders_place_order_request,
534
+ False,
535
+ False,
536
+ "json",
537
+ models.PredOrdersPlaceOrderRequest,
538
+ ),
539
+ allow_empty_value=None,
540
+ allowed_fields=["client_id"],
541
+ timeout_ms=timeout_ms,
542
+ )
543
+
544
+ if retries == UNSET:
545
+ if self.sdk_configuration.retry_config is not UNSET:
546
+ retries = self.sdk_configuration.retry_config
547
+ else:
548
+ retries = utils.RetryConfig(
549
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
550
+ )
551
+
552
+ retry_config = None
553
+ if isinstance(retries, utils.RetryConfig):
554
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
555
+
556
+ http_res = await self.do_request_async(
557
+ hook_ctx=HookContext(
558
+ config=self.sdk_configuration,
559
+ base_url=base_url or "",
560
+ operation_id="placePredictionOrder",
561
+ oauth2_scopes=[],
562
+ security_source=self.sdk_configuration.security,
563
+ tags=["Prediction Orders"],
564
+ extensions=None,
565
+ ),
566
+ request=req,
567
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
568
+ retry_config=retry_config,
569
+ )
570
+
571
+ response_data: Any = None
572
+ if utils.match_response(http_res, "202", "application/json"):
573
+ return models.PlacePredictionOrderResponse(
574
+ object=unmarshal_json_response(
575
+ Optional[models.PlacePredictionOrderResponseBody], http_res
576
+ ),
577
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
578
+ )
579
+ if utils.match_response(http_res, "401", "application/json"):
580
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
581
+ response_data.http_meta = models.HTTPMetadata(
582
+ request=req, response=http_res
583
+ )
584
+ raise errors.Unauthorized(response_data, http_res)
585
+ if utils.match_response(http_res, ["400", "409", "429"], "application/json"):
586
+ response_data = unmarshal_json_response(
587
+ errors.PredOrdersErrorEnvelopeData, http_res
588
+ )
589
+ response_data.http_meta = models.HTTPMetadata(
590
+ request=req, response=http_res
591
+ )
592
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
593
+ if utils.match_response(http_res, ["500", "503", "504"], "application/json"):
594
+ response_data = unmarshal_json_response(
595
+ errors.PredOrdersErrorEnvelopeData, http_res
596
+ )
597
+ response_data.http_meta = models.HTTPMetadata(
598
+ request=req, response=http_res
599
+ )
600
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
601
+ if utils.match_response(http_res, "4XX", "*"):
602
+ http_res_text = await utils.stream_to_text_async(http_res)
603
+ raise errors.APIError("API error occurred", http_res, http_res_text)
604
+ if utils.match_response(http_res, "5XX", "*"):
605
+ http_res_text = await utils.stream_to_text_async(http_res)
606
+ raise errors.APIError("API error occurred", http_res, http_res_text)
607
+
608
+ raise errors.APIError("Unexpected response received", http_res)
609
+
610
+ def get_prediction_order(
611
+ self,
612
+ *,
613
+ order_id: str,
614
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
615
+ server_url: Optional[str] = None,
616
+ timeout_ms: Optional[int] = None,
617
+ http_headers: Optional[Mapping[str, str]] = None,
618
+ ) -> models.GetPredictionOrderResponse:
619
+ r"""Get prediction order
620
+
621
+ **Closed beta.** Available only to accounts enrolled in the prediction-market orders closed beta. Returns one of the authenticated user's prediction-market orders together with every venue execution report against it.
622
+
623
+ If set, this operation will use `client_id` from the global security.
624
+
625
+ :param order_id: `orderId` returned by Place Prediction Order or List Prediction Orders.
626
+ :param retries: Override the default retry configuration for this method
627
+ :param server_url: Override the default server URL for this method
628
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
629
+ :param http_headers: Additional headers to set or replace on requests.
630
+ """
631
+ base_url = None
632
+ url_variables = None
633
+ if timeout_ms is None:
634
+ timeout_ms = self.sdk_configuration.timeout_ms
635
+
636
+ if timeout_ms is None:
637
+ timeout_ms = 30000
638
+
639
+ if server_url is not None:
640
+ base_url = server_url
641
+ else:
642
+ base_url = self._get_url(base_url, url_variables)
643
+
644
+ request = models.GetPredictionOrderRequest(
645
+ order_id=order_id,
646
+ )
647
+
648
+ req = self._build_request(
649
+ method="GET",
650
+ path="/v1/predictions/orders/{orderId}",
651
+ base_url=base_url,
652
+ url_variables=url_variables,
653
+ request=request,
654
+ request_body_required=False,
655
+ request_has_path_params=True,
656
+ request_has_query_params=True,
657
+ user_agent_header="user-agent",
658
+ accept_header_value="application/json",
659
+ http_headers=http_headers,
660
+ security=self.sdk_configuration.security,
661
+ allow_empty_value=None,
662
+ allowed_fields=["client_id"],
663
+ timeout_ms=timeout_ms,
664
+ )
665
+
666
+ if retries == UNSET:
667
+ if self.sdk_configuration.retry_config is not UNSET:
668
+ retries = self.sdk_configuration.retry_config
669
+ else:
670
+ retries = utils.RetryConfig(
671
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
672
+ )
673
+
674
+ retry_config = None
675
+ if isinstance(retries, utils.RetryConfig):
676
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
677
+
678
+ http_res = self.do_request(
679
+ hook_ctx=HookContext(
680
+ config=self.sdk_configuration,
681
+ base_url=base_url or "",
682
+ operation_id="getPredictionOrder",
683
+ oauth2_scopes=[],
684
+ security_source=self.sdk_configuration.security,
685
+ tags=["Prediction Orders"],
686
+ extensions=None,
687
+ ),
688
+ request=req,
689
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
690
+ retry_config=retry_config,
691
+ )
692
+
693
+ response_data: Any = None
694
+ if utils.match_response(http_res, "200", "application/json"):
695
+ return models.GetPredictionOrderResponse(
696
+ object=unmarshal_json_response(
697
+ Optional[models.GetPredictionOrderResponseBody], http_res
698
+ ),
699
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
700
+ )
701
+ if utils.match_response(http_res, "401", "application/json"):
702
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
703
+ response_data.http_meta = models.HTTPMetadata(
704
+ request=req, response=http_res
705
+ )
706
+ raise errors.Unauthorized(response_data, http_res)
707
+ if utils.match_response(http_res, "404", "application/json"):
708
+ response_data = unmarshal_json_response(
709
+ errors.PredOrdersErrorEnvelopeData, http_res
710
+ )
711
+ response_data.http_meta = models.HTTPMetadata(
712
+ request=req, response=http_res
713
+ )
714
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
715
+ if utils.match_response(http_res, "500", "application/json"):
716
+ response_data = unmarshal_json_response(
717
+ errors.PredOrdersErrorEnvelopeData, http_res
718
+ )
719
+ response_data.http_meta = models.HTTPMetadata(
720
+ request=req, response=http_res
721
+ )
722
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
723
+ if utils.match_response(http_res, "4XX", "*"):
724
+ http_res_text = utils.stream_to_text(http_res)
725
+ raise errors.APIError("API error occurred", http_res, http_res_text)
726
+ if utils.match_response(http_res, "5XX", "*"):
727
+ http_res_text = utils.stream_to_text(http_res)
728
+ raise errors.APIError("API error occurred", http_res, http_res_text)
729
+
730
+ raise errors.APIError("Unexpected response received", http_res)
731
+
732
+ async def get_prediction_order_async(
733
+ self,
734
+ *,
735
+ order_id: str,
736
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
737
+ server_url: Optional[str] = None,
738
+ timeout_ms: Optional[int] = None,
739
+ http_headers: Optional[Mapping[str, str]] = None,
740
+ ) -> models.GetPredictionOrderResponse:
741
+ r"""Get prediction order
742
+
743
+ **Closed beta.** Available only to accounts enrolled in the prediction-market orders closed beta. Returns one of the authenticated user's prediction-market orders together with every venue execution report against it.
744
+
745
+ If set, this operation will use `client_id` from the global security.
746
+
747
+ :param order_id: `orderId` returned by Place Prediction Order or List Prediction Orders.
748
+ :param retries: Override the default retry configuration for this method
749
+ :param server_url: Override the default server URL for this method
750
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
751
+ :param http_headers: Additional headers to set or replace on requests.
752
+ """
753
+ base_url = None
754
+ url_variables = None
755
+ if timeout_ms is None:
756
+ timeout_ms = self.sdk_configuration.timeout_ms
757
+
758
+ if timeout_ms is None:
759
+ timeout_ms = 30000
760
+
761
+ if server_url is not None:
762
+ base_url = server_url
763
+ else:
764
+ base_url = self._get_url(base_url, url_variables)
765
+
766
+ request = models.GetPredictionOrderRequest(
767
+ order_id=order_id,
768
+ )
769
+
770
+ req = self._build_request_async(
771
+ method="GET",
772
+ path="/v1/predictions/orders/{orderId}",
773
+ base_url=base_url,
774
+ url_variables=url_variables,
775
+ request=request,
776
+ request_body_required=False,
777
+ request_has_path_params=True,
778
+ request_has_query_params=True,
779
+ user_agent_header="user-agent",
780
+ accept_header_value="application/json",
781
+ http_headers=http_headers,
782
+ security=self.sdk_configuration.security,
783
+ allow_empty_value=None,
784
+ allowed_fields=["client_id"],
785
+ timeout_ms=timeout_ms,
786
+ )
787
+
788
+ if retries == UNSET:
789
+ if self.sdk_configuration.retry_config is not UNSET:
790
+ retries = self.sdk_configuration.retry_config
791
+ else:
792
+ retries = utils.RetryConfig(
793
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
794
+ )
795
+
796
+ retry_config = None
797
+ if isinstance(retries, utils.RetryConfig):
798
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
799
+
800
+ http_res = await self.do_request_async(
801
+ hook_ctx=HookContext(
802
+ config=self.sdk_configuration,
803
+ base_url=base_url or "",
804
+ operation_id="getPredictionOrder",
805
+ oauth2_scopes=[],
806
+ security_source=self.sdk_configuration.security,
807
+ tags=["Prediction Orders"],
808
+ extensions=None,
809
+ ),
810
+ request=req,
811
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
812
+ retry_config=retry_config,
813
+ )
814
+
815
+ response_data: Any = None
816
+ if utils.match_response(http_res, "200", "application/json"):
817
+ return models.GetPredictionOrderResponse(
818
+ object=unmarshal_json_response(
819
+ Optional[models.GetPredictionOrderResponseBody], http_res
820
+ ),
821
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
822
+ )
823
+ if utils.match_response(http_res, "401", "application/json"):
824
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
825
+ response_data.http_meta = models.HTTPMetadata(
826
+ request=req, response=http_res
827
+ )
828
+ raise errors.Unauthorized(response_data, http_res)
829
+ if utils.match_response(http_res, "404", "application/json"):
830
+ response_data = unmarshal_json_response(
831
+ errors.PredOrdersErrorEnvelopeData, http_res
832
+ )
833
+ response_data.http_meta = models.HTTPMetadata(
834
+ request=req, response=http_res
835
+ )
836
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
837
+ if utils.match_response(http_res, "500", "application/json"):
838
+ response_data = unmarshal_json_response(
839
+ errors.PredOrdersErrorEnvelopeData, http_res
840
+ )
841
+ response_data.http_meta = models.HTTPMetadata(
842
+ request=req, response=http_res
843
+ )
844
+ raise errors.PredOrdersErrorEnvelope(response_data, http_res)
845
+ if utils.match_response(http_res, "4XX", "*"):
846
+ http_res_text = await utils.stream_to_text_async(http_res)
847
+ raise errors.APIError("API error occurred", http_res, http_res_text)
848
+ if utils.match_response(http_res, "5XX", "*"):
849
+ http_res_text = await utils.stream_to_text_async(http_res)
850
+ raise errors.APIError("API error occurred", http_res, http_res_text)
851
+
852
+ raise errors.APIError("Unexpected response received", http_res)