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
finance_dev/markets.py ADDED
@@ -0,0 +1,952 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 7d4528c4c703
3
+
4
+ from .basesdk import BaseSDK
5
+ from finance_dev import errors, models, utils
6
+ from finance_dev._hooks import HookContext
7
+ from finance_dev.types import OptionalNullable, UNSET
8
+ from finance_dev.utils.unmarshal_json_response import unmarshal_json_response
9
+ from jsonpath import JSONPath
10
+ from typing import Any, Dict, List, Mapping, Optional, Union
11
+
12
+
13
+ class Markets(BaseSDK):
14
+ def get_base_event(
15
+ self,
16
+ *,
17
+ base_event_id: str,
18
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
19
+ server_url: Optional[str] = None,
20
+ timeout_ms: Optional[int] = None,
21
+ http_headers: Optional[Mapping[str, str]] = None,
22
+ ) -> models.GetBaseEventResponse:
23
+ r"""Get a base event with its events and each event's contracts
24
+
25
+ :param base_event_id:
26
+ :param retries: Override the default retry configuration for this method
27
+ :param server_url: Override the default server URL for this method
28
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
29
+ :param http_headers: Additional headers to set or replace on requests.
30
+ """
31
+ base_url = None
32
+ url_variables = None
33
+ if timeout_ms is None:
34
+ timeout_ms = self.sdk_configuration.timeout_ms
35
+
36
+ if timeout_ms is None:
37
+ timeout_ms = 30000
38
+
39
+ if server_url is not None:
40
+ base_url = server_url
41
+ else:
42
+ base_url = self._get_url(base_url, url_variables)
43
+
44
+ request = models.GetBaseEventRequest(
45
+ base_event_id=base_event_id,
46
+ )
47
+
48
+ req = self._build_request(
49
+ method="GET",
50
+ path="/v1/predictions/base-events/{baseEventId}",
51
+ base_url=base_url,
52
+ url_variables=url_variables,
53
+ request=request,
54
+ request_body_required=False,
55
+ request_has_path_params=True,
56
+ request_has_query_params=False,
57
+ user_agent_header="user-agent",
58
+ accept_header_value="application/json",
59
+ http_headers=http_headers,
60
+ allow_empty_value=None,
61
+ timeout_ms=timeout_ms,
62
+ )
63
+
64
+ if retries == UNSET:
65
+ if self.sdk_configuration.retry_config is not UNSET:
66
+ retries = self.sdk_configuration.retry_config
67
+ else:
68
+ retries = utils.RetryConfig(
69
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
70
+ )
71
+
72
+ retry_config = None
73
+ if isinstance(retries, utils.RetryConfig):
74
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
75
+
76
+ http_res = self.do_request(
77
+ hook_ctx=HookContext(
78
+ config=self.sdk_configuration,
79
+ base_url=base_url or "",
80
+ operation_id="getBaseEvent",
81
+ oauth2_scopes=None,
82
+ security_source=None,
83
+ tags=["Prediction Market Data"],
84
+ extensions=None,
85
+ ),
86
+ request=req,
87
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
88
+ retry_config=retry_config,
89
+ )
90
+
91
+ response_data: Any = None
92
+ if utils.match_response(http_res, "200", "application/json"):
93
+ return models.GetBaseEventResponse(
94
+ object=unmarshal_json_response(
95
+ Optional[models.GetBaseEventResponseBody], http_res
96
+ ),
97
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
98
+ )
99
+ if utils.match_response(http_res, ["400", "404"], "application/json"):
100
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
101
+ response_data.http_meta = models.HTTPMetadata(
102
+ request=req, response=http_res
103
+ )
104
+ raise errors.ErrorEnvelope(response_data, http_res)
105
+ if utils.match_response(http_res, "500", "application/json"):
106
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
107
+ response_data.http_meta = models.HTTPMetadata(
108
+ request=req, response=http_res
109
+ )
110
+ raise errors.ErrorEnvelope(response_data, http_res)
111
+ if utils.match_response(http_res, "4XX", "*"):
112
+ http_res_text = utils.stream_to_text(http_res)
113
+ raise errors.APIError("API error occurred", http_res, http_res_text)
114
+ if utils.match_response(http_res, "5XX", "*"):
115
+ http_res_text = utils.stream_to_text(http_res)
116
+ raise errors.APIError("API error occurred", http_res, http_res_text)
117
+
118
+ raise errors.APIError("Unexpected response received", http_res)
119
+
120
+ async def get_base_event_async(
121
+ self,
122
+ *,
123
+ base_event_id: str,
124
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
125
+ server_url: Optional[str] = None,
126
+ timeout_ms: Optional[int] = None,
127
+ http_headers: Optional[Mapping[str, str]] = None,
128
+ ) -> models.GetBaseEventResponse:
129
+ r"""Get a base event with its events and each event's contracts
130
+
131
+ :param base_event_id:
132
+ :param retries: Override the default retry configuration for this method
133
+ :param server_url: Override the default server URL for this method
134
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
135
+ :param http_headers: Additional headers to set or replace on requests.
136
+ """
137
+ base_url = None
138
+ url_variables = None
139
+ if timeout_ms is None:
140
+ timeout_ms = self.sdk_configuration.timeout_ms
141
+
142
+ if timeout_ms is None:
143
+ timeout_ms = 30000
144
+
145
+ if server_url is not None:
146
+ base_url = server_url
147
+ else:
148
+ base_url = self._get_url(base_url, url_variables)
149
+
150
+ request = models.GetBaseEventRequest(
151
+ base_event_id=base_event_id,
152
+ )
153
+
154
+ req = self._build_request_async(
155
+ method="GET",
156
+ path="/v1/predictions/base-events/{baseEventId}",
157
+ base_url=base_url,
158
+ url_variables=url_variables,
159
+ request=request,
160
+ request_body_required=False,
161
+ request_has_path_params=True,
162
+ request_has_query_params=False,
163
+ user_agent_header="user-agent",
164
+ accept_header_value="application/json",
165
+ http_headers=http_headers,
166
+ allow_empty_value=None,
167
+ timeout_ms=timeout_ms,
168
+ )
169
+
170
+ if retries == UNSET:
171
+ if self.sdk_configuration.retry_config is not UNSET:
172
+ retries = self.sdk_configuration.retry_config
173
+ else:
174
+ retries = utils.RetryConfig(
175
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
176
+ )
177
+
178
+ retry_config = None
179
+ if isinstance(retries, utils.RetryConfig):
180
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
181
+
182
+ http_res = await self.do_request_async(
183
+ hook_ctx=HookContext(
184
+ config=self.sdk_configuration,
185
+ base_url=base_url or "",
186
+ operation_id="getBaseEvent",
187
+ oauth2_scopes=None,
188
+ security_source=None,
189
+ tags=["Prediction Market Data"],
190
+ extensions=None,
191
+ ),
192
+ request=req,
193
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
194
+ retry_config=retry_config,
195
+ )
196
+
197
+ response_data: Any = None
198
+ if utils.match_response(http_res, "200", "application/json"):
199
+ return models.GetBaseEventResponse(
200
+ object=unmarshal_json_response(
201
+ Optional[models.GetBaseEventResponseBody], http_res
202
+ ),
203
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
204
+ )
205
+ if utils.match_response(http_res, ["400", "404"], "application/json"):
206
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
207
+ response_data.http_meta = models.HTTPMetadata(
208
+ request=req, response=http_res
209
+ )
210
+ raise errors.ErrorEnvelope(response_data, http_res)
211
+ if utils.match_response(http_res, "500", "application/json"):
212
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
213
+ response_data.http_meta = models.HTTPMetadata(
214
+ request=req, response=http_res
215
+ )
216
+ raise errors.ErrorEnvelope(response_data, http_res)
217
+ if utils.match_response(http_res, "4XX", "*"):
218
+ http_res_text = await utils.stream_to_text_async(http_res)
219
+ raise errors.APIError("API error occurred", http_res, http_res_text)
220
+ if utils.match_response(http_res, "5XX", "*"):
221
+ http_res_text = await utils.stream_to_text_async(http_res)
222
+ raise errors.APIError("API error occurred", http_res, http_res_text)
223
+
224
+ raise errors.APIError("Unexpected response received", http_res)
225
+
226
+ def list_categories(
227
+ self,
228
+ *,
229
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
230
+ server_url: Optional[str] = None,
231
+ timeout_ms: Optional[int] = None,
232
+ http_headers: Optional[Mapping[str, str]] = None,
233
+ ) -> models.ListCategoriesResponse:
234
+ r"""List prediction market categories
235
+
236
+ The category tree of every category with at least one ACTIVE contract, so each one finds something when passed to search as category. Each level is ordered by name. Read from the search index, which trails the catalogue by seconds.
237
+
238
+ :param retries: Override the default retry configuration for this method
239
+ :param server_url: Override the default server URL for this method
240
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
241
+ :param http_headers: Additional headers to set or replace on requests.
242
+ """
243
+ base_url = None
244
+ url_variables = None
245
+ if timeout_ms is None:
246
+ timeout_ms = self.sdk_configuration.timeout_ms
247
+
248
+ if timeout_ms is None:
249
+ timeout_ms = 30000
250
+
251
+ if server_url is not None:
252
+ base_url = server_url
253
+ else:
254
+ base_url = self._get_url(base_url, url_variables)
255
+ req = self._build_request(
256
+ method="GET",
257
+ path="/v1/predictions/categories",
258
+ base_url=base_url,
259
+ url_variables=url_variables,
260
+ request=None,
261
+ request_body_required=False,
262
+ request_has_path_params=False,
263
+ request_has_query_params=False,
264
+ user_agent_header="user-agent",
265
+ accept_header_value="application/json",
266
+ http_headers=http_headers,
267
+ allow_empty_value=None,
268
+ timeout_ms=timeout_ms,
269
+ )
270
+
271
+ if retries == UNSET:
272
+ if self.sdk_configuration.retry_config is not UNSET:
273
+ retries = self.sdk_configuration.retry_config
274
+ else:
275
+ retries = utils.RetryConfig(
276
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
277
+ )
278
+
279
+ retry_config = None
280
+ if isinstance(retries, utils.RetryConfig):
281
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
282
+
283
+ http_res = self.do_request(
284
+ hook_ctx=HookContext(
285
+ config=self.sdk_configuration,
286
+ base_url=base_url or "",
287
+ operation_id="listCategories",
288
+ oauth2_scopes=None,
289
+ security_source=None,
290
+ tags=["Prediction Market Data"],
291
+ extensions=None,
292
+ ),
293
+ request=req,
294
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
295
+ retry_config=retry_config,
296
+ )
297
+
298
+ response_data: Any = None
299
+ if utils.match_response(http_res, "200", "application/json"):
300
+ return models.ListCategoriesResponse(
301
+ object=unmarshal_json_response(
302
+ Optional[models.ListCategoriesResponseBody], http_res
303
+ ),
304
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
305
+ )
306
+ if utils.match_response(http_res, "502", "application/json"):
307
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
308
+ response_data.http_meta = models.HTTPMetadata(
309
+ request=req, response=http_res
310
+ )
311
+ raise errors.ErrorEnvelope(response_data, http_res)
312
+ if utils.match_response(http_res, "4XX", "*"):
313
+ http_res_text = utils.stream_to_text(http_res)
314
+ raise errors.APIError("API error occurred", http_res, http_res_text)
315
+ if utils.match_response(http_res, "5XX", "*"):
316
+ http_res_text = utils.stream_to_text(http_res)
317
+ raise errors.APIError("API error occurred", http_res, http_res_text)
318
+
319
+ raise errors.APIError("Unexpected response received", http_res)
320
+
321
+ async def list_categories_async(
322
+ self,
323
+ *,
324
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
325
+ server_url: Optional[str] = None,
326
+ timeout_ms: Optional[int] = None,
327
+ http_headers: Optional[Mapping[str, str]] = None,
328
+ ) -> models.ListCategoriesResponse:
329
+ r"""List prediction market categories
330
+
331
+ The category tree of every category with at least one ACTIVE contract, so each one finds something when passed to search as category. Each level is ordered by name. Read from the search index, which trails the catalogue by seconds.
332
+
333
+ :param retries: Override the default retry configuration for this method
334
+ :param server_url: Override the default server URL for this method
335
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
336
+ :param http_headers: Additional headers to set or replace on requests.
337
+ """
338
+ base_url = None
339
+ url_variables = None
340
+ if timeout_ms is None:
341
+ timeout_ms = self.sdk_configuration.timeout_ms
342
+
343
+ if timeout_ms is None:
344
+ timeout_ms = 30000
345
+
346
+ if server_url is not None:
347
+ base_url = server_url
348
+ else:
349
+ base_url = self._get_url(base_url, url_variables)
350
+ req = self._build_request_async(
351
+ method="GET",
352
+ path="/v1/predictions/categories",
353
+ base_url=base_url,
354
+ url_variables=url_variables,
355
+ request=None,
356
+ request_body_required=False,
357
+ request_has_path_params=False,
358
+ request_has_query_params=False,
359
+ user_agent_header="user-agent",
360
+ accept_header_value="application/json",
361
+ http_headers=http_headers,
362
+ allow_empty_value=None,
363
+ timeout_ms=timeout_ms,
364
+ )
365
+
366
+ if retries == UNSET:
367
+ if self.sdk_configuration.retry_config is not UNSET:
368
+ retries = self.sdk_configuration.retry_config
369
+ else:
370
+ retries = utils.RetryConfig(
371
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
372
+ )
373
+
374
+ retry_config = None
375
+ if isinstance(retries, utils.RetryConfig):
376
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
377
+
378
+ http_res = await self.do_request_async(
379
+ hook_ctx=HookContext(
380
+ config=self.sdk_configuration,
381
+ base_url=base_url or "",
382
+ operation_id="listCategories",
383
+ oauth2_scopes=None,
384
+ security_source=None,
385
+ tags=["Prediction Market Data"],
386
+ extensions=None,
387
+ ),
388
+ request=req,
389
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
390
+ retry_config=retry_config,
391
+ )
392
+
393
+ response_data: Any = None
394
+ if utils.match_response(http_res, "200", "application/json"):
395
+ return models.ListCategoriesResponse(
396
+ object=unmarshal_json_response(
397
+ Optional[models.ListCategoriesResponseBody], http_res
398
+ ),
399
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
400
+ )
401
+ if utils.match_response(http_res, "502", "application/json"):
402
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
403
+ response_data.http_meta = models.HTTPMetadata(
404
+ request=req, response=http_res
405
+ )
406
+ raise errors.ErrorEnvelope(response_data, http_res)
407
+ if utils.match_response(http_res, "4XX", "*"):
408
+ http_res_text = await utils.stream_to_text_async(http_res)
409
+ raise errors.APIError("API error occurred", http_res, http_res_text)
410
+ if utils.match_response(http_res, "5XX", "*"):
411
+ http_res_text = await utils.stream_to_text_async(http_res)
412
+ raise errors.APIError("API error occurred", http_res, http_res_text)
413
+
414
+ raise errors.APIError("Unexpected response received", http_res)
415
+
416
+ def get_event_contracts(
417
+ self,
418
+ *,
419
+ event_id: str,
420
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
421
+ server_url: Optional[str] = None,
422
+ timeout_ms: Optional[int] = None,
423
+ http_headers: Optional[Mapping[str, str]] = None,
424
+ ) -> models.GetEventContractsResponse:
425
+ r"""Get an event and all contracts under it
426
+
427
+ :param event_id:
428
+ :param retries: Override the default retry configuration for this method
429
+ :param server_url: Override the default server URL for this method
430
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
431
+ :param http_headers: Additional headers to set or replace on requests.
432
+ """
433
+ base_url = None
434
+ url_variables = None
435
+ if timeout_ms is None:
436
+ timeout_ms = self.sdk_configuration.timeout_ms
437
+
438
+ if timeout_ms is None:
439
+ timeout_ms = 30000
440
+
441
+ if server_url is not None:
442
+ base_url = server_url
443
+ else:
444
+ base_url = self._get_url(base_url, url_variables)
445
+
446
+ request = models.GetEventContractsRequest(
447
+ event_id=event_id,
448
+ )
449
+
450
+ req = self._build_request(
451
+ method="GET",
452
+ path="/v1/predictions/events/{eventId}/contracts",
453
+ base_url=base_url,
454
+ url_variables=url_variables,
455
+ request=request,
456
+ request_body_required=False,
457
+ request_has_path_params=True,
458
+ request_has_query_params=False,
459
+ user_agent_header="user-agent",
460
+ accept_header_value="application/json",
461
+ http_headers=http_headers,
462
+ allow_empty_value=None,
463
+ timeout_ms=timeout_ms,
464
+ )
465
+
466
+ if retries == UNSET:
467
+ if self.sdk_configuration.retry_config is not UNSET:
468
+ retries = self.sdk_configuration.retry_config
469
+ else:
470
+ retries = utils.RetryConfig(
471
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
472
+ )
473
+
474
+ retry_config = None
475
+ if isinstance(retries, utils.RetryConfig):
476
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
477
+
478
+ http_res = self.do_request(
479
+ hook_ctx=HookContext(
480
+ config=self.sdk_configuration,
481
+ base_url=base_url or "",
482
+ operation_id="getEventContracts",
483
+ oauth2_scopes=None,
484
+ security_source=None,
485
+ tags=["Prediction Market Data"],
486
+ extensions=None,
487
+ ),
488
+ request=req,
489
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
490
+ retry_config=retry_config,
491
+ )
492
+
493
+ response_data: Any = None
494
+ if utils.match_response(http_res, "200", "application/json"):
495
+ return models.GetEventContractsResponse(
496
+ object=unmarshal_json_response(
497
+ Optional[models.GetEventContractsResponseBody], http_res
498
+ ),
499
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
500
+ )
501
+ if utils.match_response(http_res, ["400", "404"], "application/json"):
502
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
503
+ response_data.http_meta = models.HTTPMetadata(
504
+ request=req, response=http_res
505
+ )
506
+ raise errors.ErrorEnvelope(response_data, http_res)
507
+ if utils.match_response(http_res, "500", "application/json"):
508
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
509
+ response_data.http_meta = models.HTTPMetadata(
510
+ request=req, response=http_res
511
+ )
512
+ raise errors.ErrorEnvelope(response_data, http_res)
513
+ if utils.match_response(http_res, "4XX", "*"):
514
+ http_res_text = utils.stream_to_text(http_res)
515
+ raise errors.APIError("API error occurred", http_res, http_res_text)
516
+ if utils.match_response(http_res, "5XX", "*"):
517
+ http_res_text = utils.stream_to_text(http_res)
518
+ raise errors.APIError("API error occurred", http_res, http_res_text)
519
+
520
+ raise errors.APIError("Unexpected response received", http_res)
521
+
522
+ async def get_event_contracts_async(
523
+ self,
524
+ *,
525
+ event_id: str,
526
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
527
+ server_url: Optional[str] = None,
528
+ timeout_ms: Optional[int] = None,
529
+ http_headers: Optional[Mapping[str, str]] = None,
530
+ ) -> models.GetEventContractsResponse:
531
+ r"""Get an event and all contracts under it
532
+
533
+ :param event_id:
534
+ :param retries: Override the default retry configuration for this method
535
+ :param server_url: Override the default server URL for this method
536
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
537
+ :param http_headers: Additional headers to set or replace on requests.
538
+ """
539
+ base_url = None
540
+ url_variables = None
541
+ if timeout_ms is None:
542
+ timeout_ms = self.sdk_configuration.timeout_ms
543
+
544
+ if timeout_ms is None:
545
+ timeout_ms = 30000
546
+
547
+ if server_url is not None:
548
+ base_url = server_url
549
+ else:
550
+ base_url = self._get_url(base_url, url_variables)
551
+
552
+ request = models.GetEventContractsRequest(
553
+ event_id=event_id,
554
+ )
555
+
556
+ req = self._build_request_async(
557
+ method="GET",
558
+ path="/v1/predictions/events/{eventId}/contracts",
559
+ base_url=base_url,
560
+ url_variables=url_variables,
561
+ request=request,
562
+ request_body_required=False,
563
+ request_has_path_params=True,
564
+ request_has_query_params=False,
565
+ user_agent_header="user-agent",
566
+ accept_header_value="application/json",
567
+ http_headers=http_headers,
568
+ allow_empty_value=None,
569
+ timeout_ms=timeout_ms,
570
+ )
571
+
572
+ if retries == UNSET:
573
+ if self.sdk_configuration.retry_config is not UNSET:
574
+ retries = self.sdk_configuration.retry_config
575
+ else:
576
+ retries = utils.RetryConfig(
577
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
578
+ )
579
+
580
+ retry_config = None
581
+ if isinstance(retries, utils.RetryConfig):
582
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
583
+
584
+ http_res = await self.do_request_async(
585
+ hook_ctx=HookContext(
586
+ config=self.sdk_configuration,
587
+ base_url=base_url or "",
588
+ operation_id="getEventContracts",
589
+ oauth2_scopes=None,
590
+ security_source=None,
591
+ tags=["Prediction Market Data"],
592
+ extensions=None,
593
+ ),
594
+ request=req,
595
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
596
+ retry_config=retry_config,
597
+ )
598
+
599
+ response_data: Any = None
600
+ if utils.match_response(http_res, "200", "application/json"):
601
+ return models.GetEventContractsResponse(
602
+ object=unmarshal_json_response(
603
+ Optional[models.GetEventContractsResponseBody], http_res
604
+ ),
605
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
606
+ )
607
+ if utils.match_response(http_res, ["400", "404"], "application/json"):
608
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
609
+ response_data.http_meta = models.HTTPMetadata(
610
+ request=req, response=http_res
611
+ )
612
+ raise errors.ErrorEnvelope(response_data, http_res)
613
+ if utils.match_response(http_res, "500", "application/json"):
614
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
615
+ response_data.http_meta = models.HTTPMetadata(
616
+ request=req, response=http_res
617
+ )
618
+ raise errors.ErrorEnvelope(response_data, http_res)
619
+ if utils.match_response(http_res, "4XX", "*"):
620
+ http_res_text = await utils.stream_to_text_async(http_res)
621
+ raise errors.APIError("API error occurred", http_res, http_res_text)
622
+ if utils.match_response(http_res, "5XX", "*"):
623
+ http_res_text = await utils.stream_to_text_async(http_res)
624
+ raise errors.APIError("API error occurred", http_res, http_res_text)
625
+
626
+ raise errors.APIError("Unexpected response received", http_res)
627
+
628
+ def search(
629
+ self,
630
+ *,
631
+ type_: Optional[models.SearchType] = models.SearchType.CONTRACTS,
632
+ q: Optional[str] = None,
633
+ state: Optional[str] = None,
634
+ base_event_id: Optional[str] = None,
635
+ event_id: Optional[str] = None,
636
+ category: Optional[str] = None,
637
+ tradable: Optional[bool] = None,
638
+ page: Optional[int] = None,
639
+ per_page: Optional[int] = None,
640
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
641
+ server_url: Optional[str] = None,
642
+ timeout_ms: Optional[int] = None,
643
+ http_headers: Optional[Mapping[str, str]] = None,
644
+ ) -> Optional[models.SearchResponse]:
645
+ r"""Search contracts, events or base events
646
+
647
+ Full-text search over one index of event contracts. Filters always apply to contracts, so with type=events or type=base-events an event or base event is found through its matching contracts: one with none (for example, only DELETED contracts under the default state) is not returned. The index trails the catalogue by seconds.
648
+
649
+ :param type: Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response.
650
+ :param q: Full-text query over symbols, questions, event names and base-event specifications. Symbols split on _, - and . so `BPM 0822` finds `BPM_0822_1750`. Omit to browse, soonest last-trade date first.
651
+ :param state: Contract state. Omitted means ACTIVE; `*` matches every state, including DELETED.
652
+ :param base_event_id: Only contracts under this base event.
653
+ :param event_id: Only contracts under this event.
654
+ :param category: Only contracts in this category or any category under it. Takes a `path` from List Categories, URL-encoded. A bare level name such as `United States` matches nothing, because level names repeat under different parents.
655
+ :param tradable: Only tradable (true) or non-tradable (false) contracts.
656
+ :param page: 1-based page number; 0 or omitted means 1.
657
+ :param per_page: Hits per page, counting whatever type returns; 0 or omitted means 20, values above 100 are clamped to 100.
658
+ :param retries: Override the default retry configuration for this method
659
+ :param server_url: Override the default server URL for this method
660
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
661
+ :param http_headers: Additional headers to set or replace on requests.
662
+ """
663
+ base_url = None
664
+ url_variables = None
665
+ if timeout_ms is None:
666
+ timeout_ms = self.sdk_configuration.timeout_ms
667
+
668
+ if timeout_ms is None:
669
+ timeout_ms = 30000
670
+
671
+ if server_url is not None:
672
+ base_url = server_url
673
+ else:
674
+ base_url = self._get_url(base_url, url_variables)
675
+
676
+ request = models.SearchRequest(
677
+ type=type_,
678
+ q=q,
679
+ state=state,
680
+ base_event_id=base_event_id,
681
+ event_id=event_id,
682
+ category=category,
683
+ tradable=tradable,
684
+ page=page,
685
+ per_page=per_page,
686
+ )
687
+
688
+ req = self._build_request(
689
+ method="GET",
690
+ path="/v1/predictions/search",
691
+ base_url=base_url,
692
+ url_variables=url_variables,
693
+ request=request,
694
+ request_body_required=False,
695
+ request_has_path_params=False,
696
+ request_has_query_params=True,
697
+ user_agent_header="user-agent",
698
+ accept_header_value="application/json",
699
+ http_headers=http_headers,
700
+ allow_empty_value=None,
701
+ timeout_ms=timeout_ms,
702
+ )
703
+
704
+ if retries == UNSET:
705
+ if self.sdk_configuration.retry_config is not UNSET:
706
+ retries = self.sdk_configuration.retry_config
707
+ else:
708
+ retries = utils.RetryConfig(
709
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
710
+ )
711
+
712
+ retry_config = None
713
+ if isinstance(retries, utils.RetryConfig):
714
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
715
+
716
+ http_res = self.do_request(
717
+ hook_ctx=HookContext(
718
+ config=self.sdk_configuration,
719
+ base_url=base_url or "",
720
+ operation_id="search",
721
+ oauth2_scopes=None,
722
+ security_source=None,
723
+ tags=["Prediction Market Data"],
724
+ extensions=None,
725
+ ),
726
+ request=req,
727
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
728
+ retry_config=retry_config,
729
+ )
730
+
731
+ def next_func() -> Optional[models.SearchResponse]:
732
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
733
+ page = request.page if isinstance(request.page, int) else 1
734
+ next_page = page + 1
735
+
736
+ if not http_res.text:
737
+ return None
738
+ results = JSONPath("$.data.hits").parse(body)
739
+ if len(results) == 0 or len(results[0]) == 0:
740
+ return None
741
+ limit_ = request.per_page if isinstance(request.per_page, int) else 0
742
+ if len(results[0]) < limit_:
743
+ return None
744
+
745
+ return self.search(
746
+ type_=type_,
747
+ q=q,
748
+ state=state,
749
+ base_event_id=base_event_id,
750
+ event_id=event_id,
751
+ category=category,
752
+ tradable=tradable,
753
+ page=next_page,
754
+ per_page=per_page,
755
+ retries=retries,
756
+ server_url=server_url,
757
+ timeout_ms=timeout_ms,
758
+ http_headers=http_headers,
759
+ )
760
+
761
+ response_data: Any = None
762
+ if utils.match_response(http_res, "200", "application/json"):
763
+ return models.SearchResponse(
764
+ object=unmarshal_json_response(
765
+ Optional[models.SearchResponseBody], http_res
766
+ ),
767
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
768
+ next=next_func,
769
+ )
770
+ if utils.match_response(http_res, "400", "application/json"):
771
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
772
+ response_data.http_meta = models.HTTPMetadata(
773
+ request=req, response=http_res
774
+ )
775
+ raise errors.ErrorEnvelope(response_data, http_res)
776
+ if utils.match_response(http_res, "502", "application/json"):
777
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
778
+ response_data.http_meta = models.HTTPMetadata(
779
+ request=req, response=http_res
780
+ )
781
+ raise errors.ErrorEnvelope(response_data, http_res)
782
+ if utils.match_response(http_res, "4XX", "*"):
783
+ http_res_text = utils.stream_to_text(http_res)
784
+ raise errors.APIError("API error occurred", http_res, http_res_text)
785
+ if utils.match_response(http_res, "5XX", "*"):
786
+ http_res_text = utils.stream_to_text(http_res)
787
+ raise errors.APIError("API error occurred", http_res, http_res_text)
788
+
789
+ raise errors.APIError("Unexpected response received", http_res)
790
+
791
+ async def search_async(
792
+ self,
793
+ *,
794
+ type_: Optional[models.SearchType] = models.SearchType.CONTRACTS,
795
+ q: Optional[str] = None,
796
+ state: Optional[str] = None,
797
+ base_event_id: Optional[str] = None,
798
+ event_id: Optional[str] = None,
799
+ category: Optional[str] = None,
800
+ tradable: Optional[bool] = None,
801
+ page: Optional[int] = None,
802
+ per_page: Optional[int] = None,
803
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
804
+ server_url: Optional[str] = None,
805
+ timeout_ms: Optional[int] = None,
806
+ http_headers: Optional[Mapping[str, str]] = None,
807
+ ) -> Optional[models.SearchResponse]:
808
+ r"""Search contracts, events or base events
809
+
810
+ Full-text search over one index of event contracts. Filters always apply to contracts, so with type=events or type=base-events an event or base event is found through its matching contracts: one with none (for example, only DELETED contracts under the default state) is not returned. The index trails the catalogue by seconds.
811
+
812
+ :param type: Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response.
813
+ :param q: Full-text query over symbols, questions, event names and base-event specifications. Symbols split on _, - and . so `BPM 0822` finds `BPM_0822_1750`. Omit to browse, soonest last-trade date first.
814
+ :param state: Contract state. Omitted means ACTIVE; `*` matches every state, including DELETED.
815
+ :param base_event_id: Only contracts under this base event.
816
+ :param event_id: Only contracts under this event.
817
+ :param category: Only contracts in this category or any category under it. Takes a `path` from List Categories, URL-encoded. A bare level name such as `United States` matches nothing, because level names repeat under different parents.
818
+ :param tradable: Only tradable (true) or non-tradable (false) contracts.
819
+ :param page: 1-based page number; 0 or omitted means 1.
820
+ :param per_page: Hits per page, counting whatever type returns; 0 or omitted means 20, values above 100 are clamped to 100.
821
+ :param retries: Override the default retry configuration for this method
822
+ :param server_url: Override the default server URL for this method
823
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
824
+ :param http_headers: Additional headers to set or replace on requests.
825
+ """
826
+ base_url = None
827
+ url_variables = None
828
+ if timeout_ms is None:
829
+ timeout_ms = self.sdk_configuration.timeout_ms
830
+
831
+ if timeout_ms is None:
832
+ timeout_ms = 30000
833
+
834
+ if server_url is not None:
835
+ base_url = server_url
836
+ else:
837
+ base_url = self._get_url(base_url, url_variables)
838
+
839
+ request = models.SearchRequest(
840
+ type=type_,
841
+ q=q,
842
+ state=state,
843
+ base_event_id=base_event_id,
844
+ event_id=event_id,
845
+ category=category,
846
+ tradable=tradable,
847
+ page=page,
848
+ per_page=per_page,
849
+ )
850
+
851
+ req = self._build_request_async(
852
+ method="GET",
853
+ path="/v1/predictions/search",
854
+ base_url=base_url,
855
+ url_variables=url_variables,
856
+ request=request,
857
+ request_body_required=False,
858
+ request_has_path_params=False,
859
+ request_has_query_params=True,
860
+ user_agent_header="user-agent",
861
+ accept_header_value="application/json",
862
+ http_headers=http_headers,
863
+ allow_empty_value=None,
864
+ timeout_ms=timeout_ms,
865
+ )
866
+
867
+ if retries == UNSET:
868
+ if self.sdk_configuration.retry_config is not UNSET:
869
+ retries = self.sdk_configuration.retry_config
870
+ else:
871
+ retries = utils.RetryConfig(
872
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
873
+ )
874
+
875
+ retry_config = None
876
+ if isinstance(retries, utils.RetryConfig):
877
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
878
+
879
+ http_res = await self.do_request_async(
880
+ hook_ctx=HookContext(
881
+ config=self.sdk_configuration,
882
+ base_url=base_url or "",
883
+ operation_id="search",
884
+ oauth2_scopes=None,
885
+ security_source=None,
886
+ tags=["Prediction Market Data"],
887
+ extensions=None,
888
+ ),
889
+ request=req,
890
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
891
+ retry_config=retry_config,
892
+ )
893
+
894
+ def next_func() -> Optional[models.SearchResponse]:
895
+ body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
896
+ page = request.page if isinstance(request.page, int) else 1
897
+ next_page = page + 1
898
+
899
+ if not http_res.text:
900
+ return None
901
+ results = JSONPath("$.data.hits").parse(body)
902
+ if len(results) == 0 or len(results[0]) == 0:
903
+ return None
904
+ limit_ = request.per_page if isinstance(request.per_page, int) else 0
905
+ if len(results[0]) < limit_:
906
+ return None
907
+
908
+ return self.search(
909
+ type_=type_,
910
+ q=q,
911
+ state=state,
912
+ base_event_id=base_event_id,
913
+ event_id=event_id,
914
+ category=category,
915
+ tradable=tradable,
916
+ page=next_page,
917
+ per_page=per_page,
918
+ retries=retries,
919
+ server_url=server_url,
920
+ timeout_ms=timeout_ms,
921
+ http_headers=http_headers,
922
+ )
923
+
924
+ response_data: Any = None
925
+ if utils.match_response(http_res, "200", "application/json"):
926
+ return models.SearchResponse(
927
+ object=unmarshal_json_response(
928
+ Optional[models.SearchResponseBody], http_res
929
+ ),
930
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
931
+ next=next_func,
932
+ )
933
+ if utils.match_response(http_res, "400", "application/json"):
934
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
935
+ response_data.http_meta = models.HTTPMetadata(
936
+ request=req, response=http_res
937
+ )
938
+ raise errors.ErrorEnvelope(response_data, http_res)
939
+ if utils.match_response(http_res, "502", "application/json"):
940
+ response_data = unmarshal_json_response(errors.ErrorEnvelopeData, http_res)
941
+ response_data.http_meta = models.HTTPMetadata(
942
+ request=req, response=http_res
943
+ )
944
+ raise errors.ErrorEnvelope(response_data, http_res)
945
+ if utils.match_response(http_res, "4XX", "*"):
946
+ http_res_text = await utils.stream_to_text_async(http_res)
947
+ raise errors.APIError("API error occurred", http_res, http_res_text)
948
+ if utils.match_response(http_res, "5XX", "*"):
949
+ http_res_text = await utils.stream_to_text_async(http_res)
950
+ raise errors.APIError("API error occurred", http_res, http_res_text)
951
+
952
+ raise errors.APIError("Unexpected response received", http_res)