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,797 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: e7ed414973e3
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 typing import Any, Mapping, Optional
10
+
11
+
12
+ class Accounts(BaseSDK):
13
+ def get_account_positions(
14
+ self,
15
+ *,
16
+ id: str,
17
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
18
+ server_url: Optional[str] = None,
19
+ timeout_ms: Optional[int] = None,
20
+ http_headers: Optional[Mapping[str, str]] = None,
21
+ ) -> models.GetAccountPositionsResponse:
22
+ r"""Get Account Positions
23
+
24
+ Retrieve all open positions for a specific account. Use this for portfolio screens and pre-trade checks before selling or closing a position. Positions come only from the position-state MemoryDB read model; there is no Sterling or database fallback. An unavailable read model returns 503. Authorization accepts either the `account:information` or the `position:information` scope.
25
+
26
+ If set, this operation will use `client_id` from the global security.
27
+
28
+ :param id: Account whose positions you want to read. Enter the account ID from [User Accounts](/api-reference/accounts/user-accounts).
29
+ :param retries: Override the default retry configuration for this method
30
+ :param server_url: Override the default server URL for this method
31
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
32
+ :param http_headers: Additional headers to set or replace on requests.
33
+ """
34
+ base_url = None
35
+ url_variables = None
36
+ if timeout_ms is None:
37
+ timeout_ms = self.sdk_configuration.timeout_ms
38
+
39
+ if timeout_ms is None:
40
+ timeout_ms = 30000
41
+
42
+ if server_url is not None:
43
+ base_url = server_url
44
+ else:
45
+ base_url = self._get_url(base_url, url_variables)
46
+
47
+ request = models.GetAccountPositionsRequest(
48
+ id=id,
49
+ )
50
+
51
+ req = self._build_request(
52
+ method="GET",
53
+ path="/v1/accounts/{id}/positions",
54
+ base_url=base_url,
55
+ url_variables=url_variables,
56
+ request=request,
57
+ request_body_required=False,
58
+ request_has_path_params=True,
59
+ request_has_query_params=True,
60
+ user_agent_header="user-agent",
61
+ accept_header_value="application/json",
62
+ http_headers=http_headers,
63
+ security=self.sdk_configuration.security,
64
+ allow_empty_value=None,
65
+ allowed_fields=["client_id"],
66
+ timeout_ms=timeout_ms,
67
+ )
68
+
69
+ if retries == UNSET:
70
+ if self.sdk_configuration.retry_config is not UNSET:
71
+ retries = self.sdk_configuration.retry_config
72
+ else:
73
+ retries = utils.RetryConfig(
74
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
75
+ )
76
+
77
+ retry_config = None
78
+ if isinstance(retries, utils.RetryConfig):
79
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
80
+
81
+ http_res = self.do_request(
82
+ hook_ctx=HookContext(
83
+ config=self.sdk_configuration,
84
+ base_url=base_url or "",
85
+ operation_id="getAccountPositions",
86
+ oauth2_scopes=["position:information"],
87
+ security_source=self.sdk_configuration.security,
88
+ tags=["Accounts"],
89
+ extensions=None,
90
+ ),
91
+ request=req,
92
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
93
+ retry_config=retry_config,
94
+ )
95
+
96
+ response_data: Any = None
97
+ if utils.match_response(http_res, "200", "application/json"):
98
+ return models.GetAccountPositionsResponse(
99
+ get_positions_response=unmarshal_json_response(
100
+ Optional[models.GetPositionsResponse], http_res
101
+ ),
102
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
103
+ )
104
+ if utils.match_response(http_res, "400", "application/json"):
105
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
106
+ response_data.http_meta = models.HTTPMetadata(
107
+ request=req, response=http_res
108
+ )
109
+ raise errors.BadRequest(response_data, http_res)
110
+ if utils.match_response(http_res, "401", "application/json"):
111
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
112
+ response_data.http_meta = models.HTTPMetadata(
113
+ request=req, response=http_res
114
+ )
115
+ raise errors.Unauthorized(response_data, http_res)
116
+ if utils.match_response(http_res, "403", "application/json"):
117
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
118
+ response_data.http_meta = models.HTTPMetadata(
119
+ request=req, response=http_res
120
+ )
121
+ raise errors.Forbidden(response_data, http_res)
122
+ if utils.match_response(http_res, "404", "application/json"):
123
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
124
+ response_data.http_meta = models.HTTPMetadata(
125
+ request=req, response=http_res
126
+ )
127
+ raise errors.NotFound(response_data, http_res)
128
+ if utils.match_response(http_res, "500", "application/json"):
129
+ response_data = unmarshal_json_response(
130
+ errors.InternalServerErrorUnion, http_res
131
+ )
132
+ response_data.http_meta = models.HTTPMetadata(
133
+ request=req, response=http_res
134
+ )
135
+ raise errors.InternalServerError(response_data, http_res)
136
+ if utils.match_response(http_res, "503", "application/json"):
137
+ response_data = unmarshal_json_response(
138
+ errors.AuthenticationErrorEnvelopeData, http_res
139
+ )
140
+ response_data.http_meta = models.HTTPMetadata(
141
+ request=req, response=http_res
142
+ )
143
+ raise errors.AuthenticationErrorEnvelope(response_data, http_res)
144
+ if utils.match_response(http_res, "4XX", "*"):
145
+ http_res_text = utils.stream_to_text(http_res)
146
+ raise errors.APIError("API error occurred", http_res, http_res_text)
147
+ if utils.match_response(http_res, "5XX", "*"):
148
+ http_res_text = utils.stream_to_text(http_res)
149
+ raise errors.APIError("API error occurred", http_res, http_res_text)
150
+
151
+ raise errors.APIError("Unexpected response received", http_res)
152
+
153
+ async def get_account_positions_async(
154
+ self,
155
+ *,
156
+ id: str,
157
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
158
+ server_url: Optional[str] = None,
159
+ timeout_ms: Optional[int] = None,
160
+ http_headers: Optional[Mapping[str, str]] = None,
161
+ ) -> models.GetAccountPositionsResponse:
162
+ r"""Get Account Positions
163
+
164
+ Retrieve all open positions for a specific account. Use this for portfolio screens and pre-trade checks before selling or closing a position. Positions come only from the position-state MemoryDB read model; there is no Sterling or database fallback. An unavailable read model returns 503. Authorization accepts either the `account:information` or the `position:information` scope.
165
+
166
+ If set, this operation will use `client_id` from the global security.
167
+
168
+ :param id: Account whose positions you want to read. Enter the account ID from [User Accounts](/api-reference/accounts/user-accounts).
169
+ :param retries: Override the default retry configuration for this method
170
+ :param server_url: Override the default server URL for this method
171
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
172
+ :param http_headers: Additional headers to set or replace on requests.
173
+ """
174
+ base_url = None
175
+ url_variables = None
176
+ if timeout_ms is None:
177
+ timeout_ms = self.sdk_configuration.timeout_ms
178
+
179
+ if timeout_ms is None:
180
+ timeout_ms = 30000
181
+
182
+ if server_url is not None:
183
+ base_url = server_url
184
+ else:
185
+ base_url = self._get_url(base_url, url_variables)
186
+
187
+ request = models.GetAccountPositionsRequest(
188
+ id=id,
189
+ )
190
+
191
+ req = self._build_request_async(
192
+ method="GET",
193
+ path="/v1/accounts/{id}/positions",
194
+ base_url=base_url,
195
+ url_variables=url_variables,
196
+ request=request,
197
+ request_body_required=False,
198
+ request_has_path_params=True,
199
+ request_has_query_params=True,
200
+ user_agent_header="user-agent",
201
+ accept_header_value="application/json",
202
+ http_headers=http_headers,
203
+ security=self.sdk_configuration.security,
204
+ allow_empty_value=None,
205
+ allowed_fields=["client_id"],
206
+ timeout_ms=timeout_ms,
207
+ )
208
+
209
+ if retries == UNSET:
210
+ if self.sdk_configuration.retry_config is not UNSET:
211
+ retries = self.sdk_configuration.retry_config
212
+ else:
213
+ retries = utils.RetryConfig(
214
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
215
+ )
216
+
217
+ retry_config = None
218
+ if isinstance(retries, utils.RetryConfig):
219
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
220
+
221
+ http_res = await self.do_request_async(
222
+ hook_ctx=HookContext(
223
+ config=self.sdk_configuration,
224
+ base_url=base_url or "",
225
+ operation_id="getAccountPositions",
226
+ oauth2_scopes=["position:information"],
227
+ security_source=self.sdk_configuration.security,
228
+ tags=["Accounts"],
229
+ extensions=None,
230
+ ),
231
+ request=req,
232
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
233
+ retry_config=retry_config,
234
+ )
235
+
236
+ response_data: Any = None
237
+ if utils.match_response(http_res, "200", "application/json"):
238
+ return models.GetAccountPositionsResponse(
239
+ get_positions_response=unmarshal_json_response(
240
+ Optional[models.GetPositionsResponse], http_res
241
+ ),
242
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
243
+ )
244
+ if utils.match_response(http_res, "400", "application/json"):
245
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
246
+ response_data.http_meta = models.HTTPMetadata(
247
+ request=req, response=http_res
248
+ )
249
+ raise errors.BadRequest(response_data, http_res)
250
+ if utils.match_response(http_res, "401", "application/json"):
251
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
252
+ response_data.http_meta = models.HTTPMetadata(
253
+ request=req, response=http_res
254
+ )
255
+ raise errors.Unauthorized(response_data, http_res)
256
+ if utils.match_response(http_res, "403", "application/json"):
257
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
258
+ response_data.http_meta = models.HTTPMetadata(
259
+ request=req, response=http_res
260
+ )
261
+ raise errors.Forbidden(response_data, http_res)
262
+ if utils.match_response(http_res, "404", "application/json"):
263
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
264
+ response_data.http_meta = models.HTTPMetadata(
265
+ request=req, response=http_res
266
+ )
267
+ raise errors.NotFound(response_data, http_res)
268
+ if utils.match_response(http_res, "500", "application/json"):
269
+ response_data = unmarshal_json_response(
270
+ errors.InternalServerErrorUnion, http_res
271
+ )
272
+ response_data.http_meta = models.HTTPMetadata(
273
+ request=req, response=http_res
274
+ )
275
+ raise errors.InternalServerError(response_data, http_res)
276
+ if utils.match_response(http_res, "503", "application/json"):
277
+ response_data = unmarshal_json_response(
278
+ errors.AuthenticationErrorEnvelopeData, http_res
279
+ )
280
+ response_data.http_meta = models.HTTPMetadata(
281
+ request=req, response=http_res
282
+ )
283
+ raise errors.AuthenticationErrorEnvelope(response_data, http_res)
284
+ if utils.match_response(http_res, "4XX", "*"):
285
+ http_res_text = await utils.stream_to_text_async(http_res)
286
+ raise errors.APIError("API error occurred", http_res, http_res_text)
287
+ if utils.match_response(http_res, "5XX", "*"):
288
+ http_res_text = await utils.stream_to_text_async(http_res)
289
+ raise errors.APIError("API error occurred", http_res, http_res_text)
290
+
291
+ raise errors.APIError("Unexpected response received", http_res)
292
+
293
+ def get_account_balance(
294
+ self,
295
+ *,
296
+ id: str,
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.GetAccountBalanceResponse:
302
+ r"""Get Account Balance
303
+
304
+ Retrieve account balance, cash, equity, and buying power for a specific account (v2). Use this before showing an order ticket or checking whether the account can support a trade. Sterling and the stored balance are read concurrently. The stored read uses Dragonfly, then PostgreSQL on a full cache miss. Sterling supplies the balance when available, enriched with stored Apex fields; otherwise the stored balance is used.
305
+
306
+ If set, this operation will use `client_id` from the global security.
307
+
308
+ :param id: Account whose balance you want to read. Enter the account ID from `GET /v1/users/me/accounts`.
309
+ :param retries: Override the default retry configuration for this method
310
+ :param server_url: Override the default server URL for this method
311
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
312
+ :param http_headers: Additional headers to set or replace on requests.
313
+ """
314
+ base_url = None
315
+ url_variables = None
316
+ if timeout_ms is None:
317
+ timeout_ms = self.sdk_configuration.timeout_ms
318
+
319
+ if timeout_ms is None:
320
+ timeout_ms = 30000
321
+
322
+ if server_url is not None:
323
+ base_url = server_url
324
+ else:
325
+ base_url = self._get_url(base_url, url_variables)
326
+
327
+ request = models.GetAccountBalanceRequest(
328
+ id=id,
329
+ )
330
+
331
+ req = self._build_request(
332
+ method="GET",
333
+ path="/v2/accounts/{id}/balance",
334
+ base_url=base_url,
335
+ url_variables=url_variables,
336
+ request=request,
337
+ request_body_required=False,
338
+ request_has_path_params=True,
339
+ request_has_query_params=True,
340
+ user_agent_header="user-agent",
341
+ accept_header_value="application/json",
342
+ http_headers=http_headers,
343
+ security=self.sdk_configuration.security,
344
+ allow_empty_value=None,
345
+ allowed_fields=["client_id"],
346
+ timeout_ms=timeout_ms,
347
+ )
348
+
349
+ if retries == UNSET:
350
+ if self.sdk_configuration.retry_config is not UNSET:
351
+ retries = self.sdk_configuration.retry_config
352
+ else:
353
+ retries = utils.RetryConfig(
354
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
355
+ )
356
+
357
+ retry_config = None
358
+ if isinstance(retries, utils.RetryConfig):
359
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
360
+
361
+ http_res = self.do_request(
362
+ hook_ctx=HookContext(
363
+ config=self.sdk_configuration,
364
+ base_url=base_url or "",
365
+ operation_id="getAccountBalance",
366
+ oauth2_scopes=["account:information"],
367
+ security_source=self.sdk_configuration.security,
368
+ tags=["Accounts"],
369
+ extensions=None,
370
+ ),
371
+ request=req,
372
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
373
+ retry_config=retry_config,
374
+ )
375
+
376
+ response_data: Any = None
377
+ if utils.match_response(http_res, "200", "application/json"):
378
+ return models.GetAccountBalanceResponse(
379
+ account_balance_v2=unmarshal_json_response(
380
+ Optional[models.AccountBalanceV2], http_res
381
+ ),
382
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
383
+ )
384
+ if utils.match_response(http_res, "400", "application/json"):
385
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
386
+ response_data.http_meta = models.HTTPMetadata(
387
+ request=req, response=http_res
388
+ )
389
+ raise errors.BadRequest(response_data, http_res)
390
+ if utils.match_response(http_res, "401", "application/json"):
391
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
392
+ response_data.http_meta = models.HTTPMetadata(
393
+ request=req, response=http_res
394
+ )
395
+ raise errors.Unauthorized(response_data, http_res)
396
+ if utils.match_response(http_res, "403", "application/json"):
397
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
398
+ response_data.http_meta = models.HTTPMetadata(
399
+ request=req, response=http_res
400
+ )
401
+ raise errors.Forbidden(response_data, http_res)
402
+ if utils.match_response(http_res, "404", "application/json"):
403
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
404
+ response_data.http_meta = models.HTTPMetadata(
405
+ request=req, response=http_res
406
+ )
407
+ raise errors.NotFound(response_data, http_res)
408
+ if utils.match_response(http_res, "500", "application/json"):
409
+ response_data = unmarshal_json_response(
410
+ errors.InternalServerErrorUnion, http_res
411
+ )
412
+ response_data.http_meta = models.HTTPMetadata(
413
+ request=req, response=http_res
414
+ )
415
+ raise errors.InternalServerError(response_data, http_res)
416
+ if utils.match_response(http_res, "503", "application/json"):
417
+ response_data = unmarshal_json_response(
418
+ errors.AuthenticationErrorEnvelopeData, http_res
419
+ )
420
+ response_data.http_meta = models.HTTPMetadata(
421
+ request=req, response=http_res
422
+ )
423
+ raise errors.AuthenticationErrorEnvelope(response_data, http_res)
424
+ if utils.match_response(http_res, "4XX", "*"):
425
+ http_res_text = utils.stream_to_text(http_res)
426
+ raise errors.APIError("API error occurred", http_res, http_res_text)
427
+ if utils.match_response(http_res, "5XX", "*"):
428
+ http_res_text = utils.stream_to_text(http_res)
429
+ raise errors.APIError("API error occurred", http_res, http_res_text)
430
+
431
+ raise errors.APIError("Unexpected response received", http_res)
432
+
433
+ async def get_account_balance_async(
434
+ self,
435
+ *,
436
+ id: str,
437
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
438
+ server_url: Optional[str] = None,
439
+ timeout_ms: Optional[int] = None,
440
+ http_headers: Optional[Mapping[str, str]] = None,
441
+ ) -> models.GetAccountBalanceResponse:
442
+ r"""Get Account Balance
443
+
444
+ Retrieve account balance, cash, equity, and buying power for a specific account (v2). Use this before showing an order ticket or checking whether the account can support a trade. Sterling and the stored balance are read concurrently. The stored read uses Dragonfly, then PostgreSQL on a full cache miss. Sterling supplies the balance when available, enriched with stored Apex fields; otherwise the stored balance is used.
445
+
446
+ If set, this operation will use `client_id` from the global security.
447
+
448
+ :param id: Account whose balance you want to read. Enter the account ID from `GET /v1/users/me/accounts`.
449
+ :param retries: Override the default retry configuration for this method
450
+ :param server_url: Override the default server URL for this method
451
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
452
+ :param http_headers: Additional headers to set or replace on requests.
453
+ """
454
+ base_url = None
455
+ url_variables = None
456
+ if timeout_ms is None:
457
+ timeout_ms = self.sdk_configuration.timeout_ms
458
+
459
+ if timeout_ms is None:
460
+ timeout_ms = 30000
461
+
462
+ if server_url is not None:
463
+ base_url = server_url
464
+ else:
465
+ base_url = self._get_url(base_url, url_variables)
466
+
467
+ request = models.GetAccountBalanceRequest(
468
+ id=id,
469
+ )
470
+
471
+ req = self._build_request_async(
472
+ method="GET",
473
+ path="/v2/accounts/{id}/balance",
474
+ base_url=base_url,
475
+ url_variables=url_variables,
476
+ request=request,
477
+ request_body_required=False,
478
+ request_has_path_params=True,
479
+ request_has_query_params=True,
480
+ user_agent_header="user-agent",
481
+ accept_header_value="application/json",
482
+ http_headers=http_headers,
483
+ security=self.sdk_configuration.security,
484
+ allow_empty_value=None,
485
+ allowed_fields=["client_id"],
486
+ timeout_ms=timeout_ms,
487
+ )
488
+
489
+ if retries == UNSET:
490
+ if self.sdk_configuration.retry_config is not UNSET:
491
+ retries = self.sdk_configuration.retry_config
492
+ else:
493
+ retries = utils.RetryConfig(
494
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
495
+ )
496
+
497
+ retry_config = None
498
+ if isinstance(retries, utils.RetryConfig):
499
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
500
+
501
+ http_res = await self.do_request_async(
502
+ hook_ctx=HookContext(
503
+ config=self.sdk_configuration,
504
+ base_url=base_url or "",
505
+ operation_id="getAccountBalance",
506
+ oauth2_scopes=["account:information"],
507
+ security_source=self.sdk_configuration.security,
508
+ tags=["Accounts"],
509
+ extensions=None,
510
+ ),
511
+ request=req,
512
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
513
+ retry_config=retry_config,
514
+ )
515
+
516
+ response_data: Any = None
517
+ if utils.match_response(http_res, "200", "application/json"):
518
+ return models.GetAccountBalanceResponse(
519
+ account_balance_v2=unmarshal_json_response(
520
+ Optional[models.AccountBalanceV2], http_res
521
+ ),
522
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
523
+ )
524
+ if utils.match_response(http_res, "400", "application/json"):
525
+ response_data = unmarshal_json_response(errors.BadRequestUnion, http_res)
526
+ response_data.http_meta = models.HTTPMetadata(
527
+ request=req, response=http_res
528
+ )
529
+ raise errors.BadRequest(response_data, http_res)
530
+ if utils.match_response(http_res, "401", "application/json"):
531
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
532
+ response_data.http_meta = models.HTTPMetadata(
533
+ request=req, response=http_res
534
+ )
535
+ raise errors.Unauthorized(response_data, http_res)
536
+ if utils.match_response(http_res, "403", "application/json"):
537
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
538
+ response_data.http_meta = models.HTTPMetadata(
539
+ request=req, response=http_res
540
+ )
541
+ raise errors.Forbidden(response_data, http_res)
542
+ if utils.match_response(http_res, "404", "application/json"):
543
+ response_data = unmarshal_json_response(errors.NotFoundUnion, http_res)
544
+ response_data.http_meta = models.HTTPMetadata(
545
+ request=req, response=http_res
546
+ )
547
+ raise errors.NotFound(response_data, http_res)
548
+ if utils.match_response(http_res, "500", "application/json"):
549
+ response_data = unmarshal_json_response(
550
+ errors.InternalServerErrorUnion, http_res
551
+ )
552
+ response_data.http_meta = models.HTTPMetadata(
553
+ request=req, response=http_res
554
+ )
555
+ raise errors.InternalServerError(response_data, http_res)
556
+ if utils.match_response(http_res, "503", "application/json"):
557
+ response_data = unmarshal_json_response(
558
+ errors.AuthenticationErrorEnvelopeData, http_res
559
+ )
560
+ response_data.http_meta = models.HTTPMetadata(
561
+ request=req, response=http_res
562
+ )
563
+ raise errors.AuthenticationErrorEnvelope(response_data, http_res)
564
+ if utils.match_response(http_res, "4XX", "*"):
565
+ http_res_text = await utils.stream_to_text_async(http_res)
566
+ raise errors.APIError("API error occurred", http_res, http_res_text)
567
+ if utils.match_response(http_res, "5XX", "*"):
568
+ http_res_text = await utils.stream_to_text_async(http_res)
569
+ raise errors.APIError("API error occurred", http_res, http_res_text)
570
+
571
+ raise errors.APIError("Unexpected response received", http_res)
572
+
573
+ def get_user_accounts(
574
+ self,
575
+ *,
576
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
577
+ server_url: Optional[str] = None,
578
+ timeout_ms: Optional[int] = None,
579
+ http_headers: Optional[Mapping[str, str]] = None,
580
+ ) -> models.GetUserAccountsResponse:
581
+ r"""Get User Accounts
582
+
583
+ Retrieve all trading accounts for the currently authenticated user. Returns a list of accounts with trading account ID, broker account ID, status, simulation flag, and account type and class. Users may have multiple accounts (for example a live account and a simulation account). Requires bearer token authentication.
584
+
585
+ If set, this operation will use `client_id` from the global security.
586
+
587
+ :param retries: Override the default retry configuration for this method
588
+ :param server_url: Override the default server URL for this method
589
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
590
+ :param http_headers: Additional headers to set or replace on requests.
591
+ """
592
+ base_url = None
593
+ url_variables = None
594
+ if timeout_ms is None:
595
+ timeout_ms = self.sdk_configuration.timeout_ms
596
+
597
+ if timeout_ms is None:
598
+ timeout_ms = 30000
599
+
600
+ if server_url is not None:
601
+ base_url = server_url
602
+ else:
603
+ base_url = self._get_url(base_url, url_variables)
604
+ req = self._build_request(
605
+ method="GET",
606
+ path="/v2/users/me/accounts",
607
+ base_url=base_url,
608
+ url_variables=url_variables,
609
+ request=None,
610
+ request_body_required=False,
611
+ request_has_path_params=False,
612
+ request_has_query_params=True,
613
+ user_agent_header="user-agent",
614
+ accept_header_value="application/json",
615
+ http_headers=http_headers,
616
+ security=self.sdk_configuration.security,
617
+ allow_empty_value=None,
618
+ allowed_fields=["client_id"],
619
+ timeout_ms=timeout_ms,
620
+ )
621
+
622
+ if retries == UNSET:
623
+ if self.sdk_configuration.retry_config is not UNSET:
624
+ retries = self.sdk_configuration.retry_config
625
+ else:
626
+ retries = utils.RetryConfig(
627
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
628
+ )
629
+
630
+ retry_config = None
631
+ if isinstance(retries, utils.RetryConfig):
632
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
633
+
634
+ http_res = self.do_request(
635
+ hook_ctx=HookContext(
636
+ config=self.sdk_configuration,
637
+ base_url=base_url or "",
638
+ operation_id="getUserAccounts",
639
+ oauth2_scopes=["account:information"],
640
+ security_source=self.sdk_configuration.security,
641
+ tags=["Accounts"],
642
+ extensions=None,
643
+ ),
644
+ request=req,
645
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
646
+ retry_config=retry_config,
647
+ )
648
+
649
+ response_data: Any = None
650
+ if utils.match_response(http_res, "200", "application/json"):
651
+ return models.GetUserAccountsResponse(
652
+ get_accounts_response=unmarshal_json_response(
653
+ Optional[models.GetAccountsResponse], http_res
654
+ ),
655
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
656
+ )
657
+ if utils.match_response(http_res, "401", "application/json"):
658
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
659
+ response_data.http_meta = models.HTTPMetadata(
660
+ request=req, response=http_res
661
+ )
662
+ raise errors.Unauthorized(response_data, http_res)
663
+ if utils.match_response(http_res, "403", "application/json"):
664
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
665
+ response_data.http_meta = models.HTTPMetadata(
666
+ request=req, response=http_res
667
+ )
668
+ raise errors.Forbidden(response_data, http_res)
669
+ if utils.match_response(http_res, "500", "application/json"):
670
+ response_data = unmarshal_json_response(
671
+ errors.InternalServerErrorUnion, http_res
672
+ )
673
+ response_data.http_meta = models.HTTPMetadata(
674
+ request=req, response=http_res
675
+ )
676
+ raise errors.InternalServerError(response_data, http_res)
677
+ if utils.match_response(http_res, "4XX", "*"):
678
+ http_res_text = utils.stream_to_text(http_res)
679
+ raise errors.APIError("API error occurred", http_res, http_res_text)
680
+ if utils.match_response(http_res, "5XX", "*"):
681
+ http_res_text = utils.stream_to_text(http_res)
682
+ raise errors.APIError("API error occurred", http_res, http_res_text)
683
+
684
+ raise errors.APIError("Unexpected response received", http_res)
685
+
686
+ async def get_user_accounts_async(
687
+ self,
688
+ *,
689
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
690
+ server_url: Optional[str] = None,
691
+ timeout_ms: Optional[int] = None,
692
+ http_headers: Optional[Mapping[str, str]] = None,
693
+ ) -> models.GetUserAccountsResponse:
694
+ r"""Get User Accounts
695
+
696
+ Retrieve all trading accounts for the currently authenticated user. Returns a list of accounts with trading account ID, broker account ID, status, simulation flag, and account type and class. Users may have multiple accounts (for example a live account and a simulation account). Requires bearer token authentication.
697
+
698
+ If set, this operation will use `client_id` from the global security.
699
+
700
+ :param retries: Override the default retry configuration for this method
701
+ :param server_url: Override the default server URL for this method
702
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
703
+ :param http_headers: Additional headers to set or replace on requests.
704
+ """
705
+ base_url = None
706
+ url_variables = None
707
+ if timeout_ms is None:
708
+ timeout_ms = self.sdk_configuration.timeout_ms
709
+
710
+ if timeout_ms is None:
711
+ timeout_ms = 30000
712
+
713
+ if server_url is not None:
714
+ base_url = server_url
715
+ else:
716
+ base_url = self._get_url(base_url, url_variables)
717
+ req = self._build_request_async(
718
+ method="GET",
719
+ path="/v2/users/me/accounts",
720
+ base_url=base_url,
721
+ url_variables=url_variables,
722
+ request=None,
723
+ request_body_required=False,
724
+ request_has_path_params=False,
725
+ request_has_query_params=True,
726
+ user_agent_header="user-agent",
727
+ accept_header_value="application/json",
728
+ http_headers=http_headers,
729
+ security=self.sdk_configuration.security,
730
+ allow_empty_value=None,
731
+ allowed_fields=["client_id"],
732
+ timeout_ms=timeout_ms,
733
+ )
734
+
735
+ if retries == UNSET:
736
+ if self.sdk_configuration.retry_config is not UNSET:
737
+ retries = self.sdk_configuration.retry_config
738
+ else:
739
+ retries = utils.RetryConfig(
740
+ "backoff", utils.BackoffStrategy(500, 8000, 1.5, 60000), True
741
+ )
742
+
743
+ retry_config = None
744
+ if isinstance(retries, utils.RetryConfig):
745
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
746
+
747
+ http_res = await self.do_request_async(
748
+ hook_ctx=HookContext(
749
+ config=self.sdk_configuration,
750
+ base_url=base_url or "",
751
+ operation_id="getUserAccounts",
752
+ oauth2_scopes=["account:information"],
753
+ security_source=self.sdk_configuration.security,
754
+ tags=["Accounts"],
755
+ extensions=None,
756
+ ),
757
+ request=req,
758
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
759
+ retry_config=retry_config,
760
+ )
761
+
762
+ response_data: Any = None
763
+ if utils.match_response(http_res, "200", "application/json"):
764
+ return models.GetUserAccountsResponse(
765
+ get_accounts_response=unmarshal_json_response(
766
+ Optional[models.GetAccountsResponse], http_res
767
+ ),
768
+ http_meta=models.HTTPMetadata(request=req, response=http_res),
769
+ )
770
+ if utils.match_response(http_res, "401", "application/json"):
771
+ response_data = unmarshal_json_response(errors.UnauthorizedUnion, http_res)
772
+ response_data.http_meta = models.HTTPMetadata(
773
+ request=req, response=http_res
774
+ )
775
+ raise errors.Unauthorized(response_data, http_res)
776
+ if utils.match_response(http_res, "403", "application/json"):
777
+ response_data = unmarshal_json_response(errors.ForbiddenUnion, http_res)
778
+ response_data.http_meta = models.HTTPMetadata(
779
+ request=req, response=http_res
780
+ )
781
+ raise errors.Forbidden(response_data, http_res)
782
+ if utils.match_response(http_res, "500", "application/json"):
783
+ response_data = unmarshal_json_response(
784
+ errors.InternalServerErrorUnion, http_res
785
+ )
786
+ response_data.http_meta = models.HTTPMetadata(
787
+ request=req, response=http_res
788
+ )
789
+ raise errors.InternalServerError(response_data, http_res)
790
+ if utils.match_response(http_res, "4XX", "*"):
791
+ http_res_text = await utils.stream_to_text_async(http_res)
792
+ raise errors.APIError("API error occurred", http_res, http_res_text)
793
+ if utils.match_response(http_res, "5XX", "*"):
794
+ http_res_text = await utils.stream_to_text_async(http_res)
795
+ raise errors.APIError("API error occurred", http_res, http_res_text)
796
+
797
+ raise errors.APIError("Unexpected response received", http_res)