snaptrade 1.2.0

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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -0
  3. data/Gemfile.lock +84 -0
  4. data/README.md +254 -0
  5. data/Rakefile +10 -0
  6. data/docs/APIStatusApi.md +57 -0
  7. data/docs/Account.md +36 -0
  8. data/docs/AccountHoldings.md +24 -0
  9. data/docs/AccountHoldingsAccount.md +26 -0
  10. data/docs/AccountInformationApi.md +535 -0
  11. data/docs/AccountOrderRecord.md +52 -0
  12. data/docs/AccountOrderRecordStatus.md +15 -0
  13. data/docs/AccountSimple.md +24 -0
  14. data/docs/AccountSyncStatus.md +18 -0
  15. data/docs/Action.md +15 -0
  16. data/docs/AuthType.md +15 -0
  17. data/docs/AuthenticationApi.md +314 -0
  18. data/docs/AuthenticationLoginSnapTradeUser200Response.md +49 -0
  19. data/docs/Balance.md +20 -0
  20. data/docs/Brokerage.md +52 -0
  21. data/docs/BrokerageAuthorization.md +34 -0
  22. data/docs/BrokerageAuthorizationType.md +18 -0
  23. data/docs/BrokerageAuthorizationTypeReadOnly.md +24 -0
  24. data/docs/BrokerageAuthorizationTypeReadOnlyBrokerage.md +22 -0
  25. data/docs/BrokerageAuthorizationTypeReadOnlyType.md +15 -0
  26. data/docs/BrokerageAuthorizationTypeType.md +15 -0
  27. data/docs/BrokerageSymbol.md +26 -0
  28. data/docs/BrokerageType.md +20 -0
  29. data/docs/CalculatedTrade.md +20 -0
  30. data/docs/CashRestriction.md +26 -0
  31. data/docs/ConnectionType.md +15 -0
  32. data/docs/ConnectionsApi.md +265 -0
  33. data/docs/ConnectionsSessionEvents200ResponseInner.md +30 -0
  34. data/docs/Currency.md +22 -0
  35. data/docs/DeleteUserResponse.md +20 -0
  36. data/docs/DividendAtDate.md +22 -0
  37. data/docs/EncryptedResponse.md +20 -0
  38. data/docs/EncryptedResponseEncryptedMessageData.md +22 -0
  39. data/docs/ErrorLogsApi.md +68 -0
  40. data/docs/Exchange.md +32 -0
  41. data/docs/ExchangeRatePairs.md +22 -0
  42. data/docs/ExcludedAsset.md +18 -0
  43. data/docs/JWT.md +18 -0
  44. data/docs/LoginRedirectURI.md +20 -0
  45. data/docs/ManualTrade.md +32 -0
  46. data/docs/ManualTradeAndImpact.md +22 -0
  47. data/docs/ManualTradeBalance.md +22 -0
  48. data/docs/ManualTradeForm.md +32 -0
  49. data/docs/ManualTradeSymbol.md +28 -0
  50. data/docs/Model400FailedRequestResponse.md +20 -0
  51. data/docs/Model401FailedRequestResponse.md +20 -0
  52. data/docs/Model403FailedRequestResponse.md +20 -0
  53. data/docs/Model404FailedRequestResponse.md +20 -0
  54. data/docs/ModelAssetClass.md +20 -0
  55. data/docs/ModelAssetClassDetails.md +20 -0
  56. data/docs/ModelAssetClassTarget.md +18 -0
  57. data/docs/ModelPortfolio.md +22 -0
  58. data/docs/ModelPortfolioAssetClass.md +20 -0
  59. data/docs/ModelPortfolioDetails.md +22 -0
  60. data/docs/ModelPortfolioSecurity.md +20 -0
  61. data/docs/ModelType.md +15 -0
  62. data/docs/MonthlyDividends.md +20 -0
  63. data/docs/NetContributions.md +22 -0
  64. data/docs/NetDividend.md +22 -0
  65. data/docs/OptionChainInner.md +26 -0
  66. data/docs/OptionChainInnerChainPerRootInner.md +22 -0
  67. data/docs/OptionChainInnerChainPerRootInnerChainPerStrikePriceInner.md +22 -0
  68. data/docs/OptionLeg.md +22 -0
  69. data/docs/OptionLegAction.md +15 -0
  70. data/docs/OptionStrategy.md +26 -0
  71. data/docs/OptionStrategyLegsInner.md +24 -0
  72. data/docs/OptionsApi.md +390 -0
  73. data/docs/OptionsGetOptionStrategyRequest.md +22 -0
  74. data/docs/OptionsHoldings.md +28 -0
  75. data/docs/OptionsPlaceOptionStrategyRequest.md +22 -0
  76. data/docs/OptionsPosition.md +30 -0
  77. data/docs/OptionsSymbol.md +38 -0
  78. data/docs/OrderStrategyExecuteBodyOrderType.md +15 -0
  79. data/docs/OrderStrategyExecuteBodyTimeInForce.md +15 -0
  80. data/docs/OrderType.md +15 -0
  81. data/docs/PartnerData.md +40 -0
  82. data/docs/PastValue.md +22 -0
  83. data/docs/PerformanceCustom.md +54 -0
  84. data/docs/PortfolioGroup.md +20 -0
  85. data/docs/PortfolioGroupInfo.md +38 -0
  86. data/docs/PortfolioGroupPosition.md +22 -0
  87. data/docs/PortfolioGroupSettings.md +26 -0
  88. data/docs/PortfolioManagementApi.md +2014 -0
  89. data/docs/Position.md +28 -0
  90. data/docs/PositionSymbol.md +28 -0
  91. data/docs/RedirectTokenandPin.md +20 -0
  92. data/docs/ReferenceDataApi.md +595 -0
  93. data/docs/SecurityType.md +24 -0
  94. data/docs/SessionEvent.md +30 -0
  95. data/docs/SessionEventType.md +15 -0
  96. data/docs/SnapTradeAPIDisclaimerAcceptStatus.md +20 -0
  97. data/docs/SnapTradeHoldingsAccount.md +32 -0
  98. data/docs/SnapTradeHoldingsAccountAccountId.md +34 -0
  99. data/docs/SnapTradeHoldingsTotalValue.md +20 -0
  100. data/docs/SnapTradeLoginUserRequestBody.md +26 -0
  101. data/docs/SnapTradeRegisterUserRequestBody.md +20 -0
  102. data/docs/State.md +15 -0
  103. data/docs/Status.md +22 -0
  104. data/docs/StrategyImpact.md +38 -0
  105. data/docs/StrategyImpactLegsInner.md +30 -0
  106. data/docs/StrategyOrderPlace.md +20 -0
  107. data/docs/StrategyOrderPlaceOrdersInner.md +102 -0
  108. data/docs/StrategyOrderPlaceOrdersInnerLegsInner.md +30 -0
  109. data/docs/StrategyOrderRecord.md +38 -0
  110. data/docs/StrategyOrderRecordOrderType.md +15 -0
  111. data/docs/StrategyOrderRecordStatus.md +15 -0
  112. data/docs/StrategyOrderRecordTimeInForce.md +15 -0
  113. data/docs/StrategyQuotes.md +28 -0
  114. data/docs/StrategyQuotesGreek.md +26 -0
  115. data/docs/StrategyType.md +15 -0
  116. data/docs/SubPeriodReturnRate.md +22 -0
  117. data/docs/Symbol.md +30 -0
  118. data/docs/SymbolQuery.md +18 -0
  119. data/docs/SymbolsQuotes.md +28 -0
  120. data/docs/TargetAsset.md +28 -0
  121. data/docs/TimeInForce.md +15 -0
  122. data/docs/Trade.md +32 -0
  123. data/docs/TradeAction.md +15 -0
  124. data/docs/TradeExecutionStatus.md +34 -0
  125. data/docs/TradeExecutionStatusAction.md +15 -0
  126. data/docs/TradeImpact.md +26 -0
  127. data/docs/TradingApi.md +799 -0
  128. data/docs/TradingCancelUserAccountOrderRequest.md +18 -0
  129. data/docs/TradingPlaceOCOOrderRequest.md +20 -0
  130. data/docs/TransactionsAndReportingApi.md +183 -0
  131. data/docs/TransactionsStatus.md +20 -0
  132. data/docs/Type.md +15 -0
  133. data/docs/USExchange.md +34 -0
  134. data/docs/UnderlyingSymbol.md +30 -0
  135. data/docs/UniversalActivity.md +46 -0
  136. data/docs/UniversalSymbol.md +32 -0
  137. data/docs/UniversalSymbolTicker.md +32 -0
  138. data/docs/UserErrorLog.md +28 -0
  139. data/docs/UserIDandSecret.md +20 -0
  140. data/docs/UserSettings.md +36 -0
  141. data/lib/snaptrade/api/account_information_api.rb +801 -0
  142. data/lib/snaptrade/api/api_status_api.rb +98 -0
  143. data/lib/snaptrade/api/authentication_api.rb +481 -0
  144. data/lib/snaptrade/api/connections_api.rb +398 -0
  145. data/lib/snaptrade/api/error_logs_api.rb +112 -0
  146. data/lib/snaptrade/api/options_api.rb +591 -0
  147. data/lib/snaptrade/api/portfolio_management_api.rb +2791 -0
  148. data/lib/snaptrade/api/reference_data_api.rb +894 -0
  149. data/lib/snaptrade/api/trading_api.rb +1150 -0
  150. data/lib/snaptrade/api/transactions_and_reporting_api.rb +283 -0
  151. data/lib/snaptrade/api_client.rb +427 -0
  152. data/lib/snaptrade/api_client_custom.rb +32 -0
  153. data/lib/snaptrade/api_error.rb +55 -0
  154. data/lib/snaptrade/configuration.rb +374 -0
  155. data/lib/snaptrade/models/account.rb +303 -0
  156. data/lib/snaptrade/models/account_holdings.rb +249 -0
  157. data/lib/snaptrade/models/account_holdings_account.rb +260 -0
  158. data/lib/snaptrade/models/account_order_record.rb +382 -0
  159. data/lib/snaptrade/models/account_order_record_status.rb +56 -0
  160. data/lib/snaptrade/models/account_simple.rb +245 -0
  161. data/lib/snaptrade/models/account_sync_status.rb +218 -0
  162. data/lib/snaptrade/models/action.rb +38 -0
  163. data/lib/snaptrade/models/auth_type.rb +40 -0
  164. data/lib/snaptrade/models/authentication_login_snap_trade_user200_response.rb +103 -0
  165. data/lib/snaptrade/models/balance.rb +228 -0
  166. data/lib/snaptrade/models/brokerage.rb +377 -0
  167. data/lib/snaptrade/models/brokerage_authorization.rb +297 -0
  168. data/lib/snaptrade/models/brokerage_authorization_type.rb +217 -0
  169. data/lib/snaptrade/models/brokerage_authorization_type_read_only.rb +244 -0
  170. data/lib/snaptrade/models/brokerage_authorization_type_read_only_brokerage.rb +237 -0
  171. data/lib/snaptrade/models/brokerage_authorization_type_read_only_type.rb +38 -0
  172. data/lib/snaptrade/models/brokerage_authorization_type_type.rb +38 -0
  173. data/lib/snaptrade/models/brokerage_symbol.rb +255 -0
  174. data/lib/snaptrade/models/brokerage_type.rb +227 -0
  175. data/lib/snaptrade/models/calculated_trade.rb +229 -0
  176. data/lib/snaptrade/models/cash_restriction.rb +254 -0
  177. data/lib/snaptrade/models/connection_type.rb +38 -0
  178. data/lib/snaptrade/models/connections_session_events200_response_inner.rb +293 -0
  179. data/lib/snaptrade/models/currency.rb +236 -0
  180. data/lib/snaptrade/models/delete_user_response.rb +229 -0
  181. data/lib/snaptrade/models/dividend_at_date.rb +240 -0
  182. data/lib/snaptrade/models/encrypted_response.rb +227 -0
  183. data/lib/snaptrade/models/encrypted_response_encrypted_message_data.rb +235 -0
  184. data/lib/snaptrade/models/exchange.rb +282 -0
  185. data/lib/snaptrade/models/exchange_rate_pairs.rb +236 -0
  186. data/lib/snaptrade/models/excluded_asset.rb +218 -0
  187. data/lib/snaptrade/models/jwt.rb +218 -0
  188. data/lib/snaptrade/models/login_redirect_uri.rb +228 -0
  189. data/lib/snaptrade/models/manual_trade.rb +283 -0
  190. data/lib/snaptrade/models/manual_trade_and_impact.rb +238 -0
  191. data/lib/snaptrade/models/manual_trade_balance.rb +238 -0
  192. data/lib/snaptrade/models/manual_trade_form.rb +285 -0
  193. data/lib/snaptrade/models/manual_trade_symbol.rb +264 -0
  194. data/lib/snaptrade/models/model400_failed_request_response.rb +229 -0
  195. data/lib/snaptrade/models/model401_failed_request_response.rb +229 -0
  196. data/lib/snaptrade/models/model403_failed_request_response.rb +229 -0
  197. data/lib/snaptrade/models/model404_failed_request_response.rb +229 -0
  198. data/lib/snaptrade/models/model_asset_class.rb +226 -0
  199. data/lib/snaptrade/models/model_asset_class_details.rb +228 -0
  200. data/lib/snaptrade/models/model_asset_class_target.rb +217 -0
  201. data/lib/snaptrade/models/model_portfolio.rb +237 -0
  202. data/lib/snaptrade/models/model_portfolio_asset_class.rb +250 -0
  203. data/lib/snaptrade/models/model_portfolio_details.rb +239 -0
  204. data/lib/snaptrade/models/model_portfolio_security.rb +250 -0
  205. data/lib/snaptrade/models/model_type.rb +39 -0
  206. data/lib/snaptrade/models/monthly_dividends.rb +229 -0
  207. data/lib/snaptrade/models/net_contributions.rb +237 -0
  208. data/lib/snaptrade/models/net_dividend.rb +237 -0
  209. data/lib/snaptrade/models/option_chain_inner.rb +255 -0
  210. data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner.rb +237 -0
  211. data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner.rb +238 -0
  212. data/lib/snaptrade/models/option_leg.rb +237 -0
  213. data/lib/snaptrade/models/option_leg_action.rb +40 -0
  214. data/lib/snaptrade/models/option_strategy.rb +255 -0
  215. data/lib/snaptrade/models/option_strategy_legs_inner.rb +244 -0
  216. data/lib/snaptrade/models/options_get_option_strategy_request.rb +252 -0
  217. data/lib/snaptrade/models/options_holdings.rb +267 -0
  218. data/lib/snaptrade/models/options_place_option_strategy_request.rb +251 -0
  219. data/lib/snaptrade/models/options_position.rb +275 -0
  220. data/lib/snaptrade/models/options_symbol.rb +310 -0
  221. data/lib/snaptrade/models/order_strategy_execute_body_order_type.rb +40 -0
  222. data/lib/snaptrade/models/order_strategy_execute_body_time_in_force.rb +38 -0
  223. data/lib/snaptrade/models/order_type.rb +40 -0
  224. data/lib/snaptrade/models/partner_data.rb +331 -0
  225. data/lib/snaptrade/models/past_value.rb +236 -0
  226. data/lib/snaptrade/models/performance_custom.rb +416 -0
  227. data/lib/snaptrade/models/portfolio_group.rb +226 -0
  228. data/lib/snaptrade/models/portfolio_group_info.rb +326 -0
  229. data/lib/snaptrade/models/portfolio_group_position.rb +238 -0
  230. data/lib/snaptrade/models/portfolio_group_settings.rb +277 -0
  231. data/lib/snaptrade/models/position.rb +271 -0
  232. data/lib/snaptrade/models/position_symbol.rb +264 -0
  233. data/lib/snaptrade/models/redirect_tokenand_pin.rb +227 -0
  234. data/lib/snaptrade/models/security_type.rb +245 -0
  235. data/lib/snaptrade/models/session_event.rb +274 -0
  236. data/lib/snaptrade/models/session_event_type.rb +43 -0
  237. data/lib/snaptrade/models/snap_trade_api_disclaimer_accept_status.rb +227 -0
  238. data/lib/snaptrade/models/snap_trade_holdings_account.rb +284 -0
  239. data/lib/snaptrade/models/snap_trade_holdings_account_account_id.rb +296 -0
  240. data/lib/snaptrade/models/snap_trade_holdings_total_value.rb +227 -0
  241. data/lib/snaptrade/models/snap_trade_login_user_request_body.rb +254 -0
  242. data/lib/snaptrade/models/snap_trade_register_user_request_body.rb +229 -0
  243. data/lib/snaptrade/models/state.rb +41 -0
  244. data/lib/snaptrade/models/status.rb +236 -0
  245. data/lib/snaptrade/models/strategy_impact.rb +310 -0
  246. data/lib/snaptrade/models/strategy_impact_legs_inner.rb +271 -0
  247. data/lib/snaptrade/models/strategy_order_place.rb +229 -0
  248. data/lib/snaptrade/models/strategy_order_place_orders_inner.rb +597 -0
  249. data/lib/snaptrade/models/strategy_order_place_orders_inner_legs_inner.rb +271 -0
  250. data/lib/snaptrade/models/strategy_order_record.rb +312 -0
  251. data/lib/snaptrade/models/strategy_order_record_order_type.rb +40 -0
  252. data/lib/snaptrade/models/strategy_order_record_status.rb +55 -0
  253. data/lib/snaptrade/models/strategy_order_record_time_in_force.rb +38 -0
  254. data/lib/snaptrade/models/strategy_quotes.rb +265 -0
  255. data/lib/snaptrade/models/strategy_quotes_greek.rb +253 -0
  256. data/lib/snaptrade/models/strategy_type.rb +37 -0
  257. data/lib/snaptrade/models/sub_period_return_rate.rb +239 -0
  258. data/lib/snaptrade/models/symbol.rb +272 -0
  259. data/lib/snaptrade/models/symbol_query.rb +218 -0
  260. data/lib/snaptrade/models/symbols_quotes.rb +263 -0
  261. data/lib/snaptrade/models/target_asset.rb +290 -0
  262. data/lib/snaptrade/models/time_in_force.rb +39 -0
  263. data/lib/snaptrade/models/trade.rb +281 -0
  264. data/lib/snaptrade/models/trade_action.rb +38 -0
  265. data/lib/snaptrade/models/trade_execution_status.rb +296 -0
  266. data/lib/snaptrade/models/trade_execution_status_action.rb +38 -0
  267. data/lib/snaptrade/models/trade_impact.rb +257 -0
  268. data/lib/snaptrade/models/trading_cancel_user_account_order_request.rb +217 -0
  269. data/lib/snaptrade/models/trading_place_oco_order_request.rb +230 -0
  270. data/lib/snaptrade/models/transactions_status.rb +229 -0
  271. data/lib/snaptrade/models/type.rb +38 -0
  272. data/lib/snaptrade/models/underlying_symbol.rb +275 -0
  273. data/lib/snaptrade/models/universal_activity.rb +349 -0
  274. data/lib/snaptrade/models/universal_symbol.rb +284 -0
  275. data/lib/snaptrade/models/universal_symbol_ticker.rb +283 -0
  276. data/lib/snaptrade/models/us_exchange.rb +291 -0
  277. data/lib/snaptrade/models/user_error_log.rb +263 -0
  278. data/lib/snaptrade/models/user_i_dand_secret.rb +229 -0
  279. data/lib/snaptrade/models/user_settings.rb +299 -0
  280. data/lib/snaptrade/version.rb +13 -0
  281. data/lib/snaptrade.rb +214 -0
  282. data/snaptrade.gemspec +41 -0
  283. data/spec/api/account_information_api_spec.rb +135 -0
  284. data/spec/api/api_status_api_spec.rb +42 -0
  285. data/spec/api/authentication_api_spec.rb +88 -0
  286. data/spec/api/connections_api_spec.rb +82 -0
  287. data/spec/api/error_logs_api_spec.rb +43 -0
  288. data/spec/api/options_api_spec.rb +101 -0
  289. data/spec/api/portfolio_management_api_spec.rb +395 -0
  290. data/spec/api/reference_data_api_spec.rb +150 -0
  291. data/spec/api/trading_api_spec.rb +163 -0
  292. data/spec/api/transactions_and_reporting_api_spec.rb +67 -0
  293. data/spec/api_client_spec.rb +193 -0
  294. data/spec/configuration_spec.rb +40 -0
  295. data/spec/getting_started_spec.rb +144 -0
  296. data/spec/models/account_holdings_account_spec.rb +54 -0
  297. data/spec/models/account_holdings_spec.rb +48 -0
  298. data/spec/models/account_order_record_spec.rb +132 -0
  299. data/spec/models/account_order_record_status_spec.rb +24 -0
  300. data/spec/models/account_simple_spec.rb +48 -0
  301. data/spec/models/account_spec.rb +84 -0
  302. data/spec/models/account_sync_status_spec.rb +30 -0
  303. data/spec/models/action_spec.rb +24 -0
  304. data/spec/models/auth_type_spec.rb +24 -0
  305. data/spec/models/authentication_login_snap_trade_user200_response_spec.rb +27 -0
  306. data/spec/models/balance_spec.rb +36 -0
  307. data/spec/models/brokerage_authorization_spec.rb +78 -0
  308. data/spec/models/brokerage_authorization_type_read_only_brokerage_spec.rb +42 -0
  309. data/spec/models/brokerage_authorization_type_read_only_spec.rb +48 -0
  310. data/spec/models/brokerage_authorization_type_read_only_type_spec.rb +24 -0
  311. data/spec/models/brokerage_authorization_type_spec.rb +30 -0
  312. data/spec/models/brokerage_authorization_type_type_spec.rb +24 -0
  313. data/spec/models/brokerage_spec.rb +132 -0
  314. data/spec/models/brokerage_symbol_spec.rb +54 -0
  315. data/spec/models/brokerage_type_spec.rb +36 -0
  316. data/spec/models/calculated_trade_spec.rb +36 -0
  317. data/spec/models/cash_restriction_spec.rb +54 -0
  318. data/spec/models/connection_type_spec.rb +24 -0
  319. data/spec/models/connections_session_events200_response_inner_spec.rb +66 -0
  320. data/spec/models/currency_spec.rb +42 -0
  321. data/spec/models/delete_user_response_spec.rb +36 -0
  322. data/spec/models/dividend_at_date_spec.rb +42 -0
  323. data/spec/models/encrypted_response_encrypted_message_data_spec.rb +42 -0
  324. data/spec/models/encrypted_response_spec.rb +36 -0
  325. data/spec/models/exchange_rate_pairs_spec.rb +42 -0
  326. data/spec/models/exchange_spec.rb +72 -0
  327. data/spec/models/excluded_asset_spec.rb +30 -0
  328. data/spec/models/jwt_spec.rb +30 -0
  329. data/spec/models/login_redirect_uri_spec.rb +36 -0
  330. data/spec/models/manual_trade_and_impact_spec.rb +42 -0
  331. data/spec/models/manual_trade_balance_spec.rb +42 -0
  332. data/spec/models/manual_trade_form_spec.rb +72 -0
  333. data/spec/models/manual_trade_spec.rb +72 -0
  334. data/spec/models/manual_trade_symbol_spec.rb +60 -0
  335. data/spec/models/model400_failed_request_response_spec.rb +36 -0
  336. data/spec/models/model401_failed_request_response_spec.rb +36 -0
  337. data/spec/models/model403_failed_request_response_spec.rb +36 -0
  338. data/spec/models/model404_failed_request_response_spec.rb +36 -0
  339. data/spec/models/model_asset_class_details_spec.rb +36 -0
  340. data/spec/models/model_asset_class_spec.rb +36 -0
  341. data/spec/models/model_asset_class_target_spec.rb +30 -0
  342. data/spec/models/model_portfolio_asset_class_spec.rb +36 -0
  343. data/spec/models/model_portfolio_details_spec.rb +42 -0
  344. data/spec/models/model_portfolio_security_spec.rb +36 -0
  345. data/spec/models/model_portfolio_spec.rb +42 -0
  346. data/spec/models/model_type_spec.rb +24 -0
  347. data/spec/models/monthly_dividends_spec.rb +36 -0
  348. data/spec/models/net_contributions_spec.rb +42 -0
  349. data/spec/models/net_dividend_spec.rb +42 -0
  350. data/spec/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner_spec.rb +42 -0
  351. data/spec/models/option_chain_inner_chain_per_root_inner_spec.rb +42 -0
  352. data/spec/models/option_chain_inner_spec.rb +54 -0
  353. data/spec/models/option_leg_action_spec.rb +24 -0
  354. data/spec/models/option_leg_spec.rb +42 -0
  355. data/spec/models/option_strategy_legs_inner_spec.rb +48 -0
  356. data/spec/models/option_strategy_spec.rb +54 -0
  357. data/spec/models/options_get_option_strategy_request_spec.rb +42 -0
  358. data/spec/models/options_holdings_spec.rb +60 -0
  359. data/spec/models/options_place_option_strategy_request_spec.rb +42 -0
  360. data/spec/models/options_position_spec.rb +66 -0
  361. data/spec/models/options_symbol_spec.rb +90 -0
  362. data/spec/models/order_strategy_execute_body_order_type_spec.rb +24 -0
  363. data/spec/models/order_strategy_execute_body_time_in_force_spec.rb +24 -0
  364. data/spec/models/order_type_spec.rb +24 -0
  365. data/spec/models/partner_data_spec.rb +96 -0
  366. data/spec/models/past_value_spec.rb +42 -0
  367. data/spec/models/performance_custom_spec.rb +138 -0
  368. data/spec/models/portfolio_group_info_spec.rb +90 -0
  369. data/spec/models/portfolio_group_position_spec.rb +42 -0
  370. data/spec/models/portfolio_group_settings_spec.rb +54 -0
  371. data/spec/models/portfolio_group_spec.rb +36 -0
  372. data/spec/models/position_spec.rb +60 -0
  373. data/spec/models/position_symbol_spec.rb +60 -0
  374. data/spec/models/redirect_tokenand_pin_spec.rb +36 -0
  375. data/spec/models/security_type_spec.rb +48 -0
  376. data/spec/models/session_event_spec.rb +66 -0
  377. data/spec/models/session_event_type_spec.rb +24 -0
  378. data/spec/models/snap_trade_api_disclaimer_accept_status_spec.rb +36 -0
  379. data/spec/models/snap_trade_holdings_account_account_id_spec.rb +78 -0
  380. data/spec/models/snap_trade_holdings_account_spec.rb +72 -0
  381. data/spec/models/snap_trade_holdings_total_value_spec.rb +36 -0
  382. data/spec/models/snap_trade_login_user_request_body_spec.rb +54 -0
  383. data/spec/models/snap_trade_register_user_request_body_spec.rb +36 -0
  384. data/spec/models/state_spec.rb +24 -0
  385. data/spec/models/status_spec.rb +42 -0
  386. data/spec/models/strategy_impact_legs_inner_spec.rb +66 -0
  387. data/spec/models/strategy_impact_spec.rb +90 -0
  388. data/spec/models/strategy_order_place_orders_inner_legs_inner_spec.rb +66 -0
  389. data/spec/models/strategy_order_place_orders_inner_spec.rb +282 -0
  390. data/spec/models/strategy_order_place_spec.rb +36 -0
  391. data/spec/models/strategy_order_record_order_type_spec.rb +24 -0
  392. data/spec/models/strategy_order_record_spec.rb +90 -0
  393. data/spec/models/strategy_order_record_status_spec.rb +24 -0
  394. data/spec/models/strategy_order_record_time_in_force_spec.rb +24 -0
  395. data/spec/models/strategy_quotes_greek_spec.rb +54 -0
  396. data/spec/models/strategy_quotes_spec.rb +60 -0
  397. data/spec/models/strategy_type_spec.rb +24 -0
  398. data/spec/models/sub_period_return_rate_spec.rb +42 -0
  399. data/spec/models/symbol_query_spec.rb +30 -0
  400. data/spec/models/symbol_spec.rb +66 -0
  401. data/spec/models/symbols_quotes_spec.rb +60 -0
  402. data/spec/models/target_asset_spec.rb +60 -0
  403. data/spec/models/time_in_force_spec.rb +24 -0
  404. data/spec/models/trade_action_spec.rb +24 -0
  405. data/spec/models/trade_execution_status_action_spec.rb +24 -0
  406. data/spec/models/trade_execution_status_spec.rb +78 -0
  407. data/spec/models/trade_impact_spec.rb +54 -0
  408. data/spec/models/trade_spec.rb +72 -0
  409. data/spec/models/trading_cancel_user_account_order_request_spec.rb +30 -0
  410. data/spec/models/trading_place_oco_order_request_spec.rb +36 -0
  411. data/spec/models/transactions_status_spec.rb +36 -0
  412. data/spec/models/type_spec.rb +24 -0
  413. data/spec/models/underlying_symbol_spec.rb +66 -0
  414. data/spec/models/universal_activity_spec.rb +114 -0
  415. data/spec/models/universal_symbol_spec.rb +72 -0
  416. data/spec/models/universal_symbol_ticker_spec.rb +72 -0
  417. data/spec/models/us_exchange_spec.rb +78 -0
  418. data/spec/models/user_error_log_spec.rb +60 -0
  419. data/spec/models/user_i_dand_secret_spec.rb +36 -0
  420. data/spec/models/user_settings_spec.rb +84 -0
  421. data/spec/spec_helper.rb +109 -0
  422. metadata +664 -0
@@ -0,0 +1,1150 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+
9
+ =end
10
+
11
+ require 'cgi'
12
+
13
+ module SnapTrade
14
+ class TradingApi
15
+ attr_accessor :api_client
16
+
17
+ def initialize(api_client = ApiClient.default)
18
+ @api_client = api_client
19
+ end
20
+
21
+ # Cancel open order in account
22
+ # @param user_id [String]
23
+ # @param user_secret [String]
24
+ # @param account_id [String] The ID of the account get positions.
25
+ # @param brokerage_order_id [String]
26
+ # @param body [TradingCancelUserAccountOrderRequest] The Order ID to be canceled
27
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
28
+ def cancel_user_account_order(user_id:, user_secret:, account_id:, brokerage_order_id: SENTINEL, extra: {})
29
+ _body = {}
30
+ _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
31
+ trading_cancel_user_account_order_request = _body
32
+
33
+ data, _status_code, _headers = cancel_user_account_order_with_http_info_impl(user_id, user_secret, account_id, trading_cancel_user_account_order_request, extra)
34
+ data
35
+ end
36
+
37
+ # Cancel open order in account
38
+ # @param user_id [String]
39
+ # @param user_secret [String]
40
+ # @param account_id [String] The ID of the account get positions.
41
+ # @param brokerage_order_id [String]
42
+ # @param body [TradingCancelUserAccountOrderRequest] The Order ID to be canceled
43
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
44
+ def cancel_user_account_order_with_http_info(user_id:, user_secret:, account_id:, brokerage_order_id: SENTINEL, extra: {})
45
+ _body = {}
46
+ _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
47
+ trading_cancel_user_account_order_request = _body
48
+
49
+ cancel_user_account_order_with_http_info_impl(user_id, user_secret, account_id, trading_cancel_user_account_order_request, extra)
50
+ end
51
+
52
+ # Cancel open order in account
53
+ # @param user_id [String]
54
+ # @param user_secret [String]
55
+ # @param account_id [String] The ID of the account get positions.
56
+ # @param trading_cancel_user_account_order_request [TradingCancelUserAccountOrderRequest] The Order ID to be canceled
57
+ # @param [Hash] opts the optional parameters
58
+ # @return [AccountOrderRecord]
59
+ def cancel_user_account_order_impl(user_id, user_secret, account_id, trading_cancel_user_account_order_request, opts = {})
60
+ data, _status_code, _headers = cancel_user_account_order_with_http_info(user_id, user_secret, account_id, trading_cancel_user_account_order_request, opts)
61
+ data
62
+ end
63
+
64
+ # Cancel open order in account
65
+ # @param user_id [String]
66
+ # @param user_secret [String]
67
+ # @param account_id [String] The ID of the account get positions.
68
+ # @param trading_cancel_user_account_order_request [TradingCancelUserAccountOrderRequest] The Order ID to be canceled
69
+ # @param [Hash] opts the optional parameters
70
+ # @return [Array<(AccountOrderRecord, Integer, Hash)>] AccountOrderRecord data, response status code and response headers
71
+ def cancel_user_account_order_with_http_info_impl(user_id, user_secret, account_id, trading_cancel_user_account_order_request, opts = {})
72
+ if @api_client.config.debugging
73
+ @api_client.config.logger.debug 'Calling API: TradingApi.cancel_user_account_order ...'
74
+ end
75
+ # verify the required parameter 'user_id' is set
76
+ if @api_client.config.client_side_validation && user_id.nil?
77
+ fail ArgumentError, "Missing the required parameter 'user_id' when calling TradingApi.cancel_user_account_order"
78
+ end
79
+ # verify the required parameter 'user_secret' is set
80
+ if @api_client.config.client_side_validation && user_secret.nil?
81
+ fail ArgumentError, "Missing the required parameter 'user_secret' when calling TradingApi.cancel_user_account_order"
82
+ end
83
+ # verify the required parameter 'account_id' is set
84
+ if @api_client.config.client_side_validation && account_id.nil?
85
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling TradingApi.cancel_user_account_order"
86
+ end
87
+ # verify the required parameter 'trading_cancel_user_account_order_request' is set
88
+ if @api_client.config.client_side_validation && trading_cancel_user_account_order_request.nil?
89
+ fail ArgumentError, "Missing the required parameter 'trading_cancel_user_account_order_request' when calling TradingApi.cancel_user_account_order"
90
+ end
91
+ # resource path
92
+ local_var_path = '/accounts/{accountId}/orders/cancel'.sub('{' + 'accountId' + '}', CGI.escape(account_id.to_s))
93
+
94
+ # query parameters
95
+ query_params = opts[:query_params] || {}
96
+ query_params[:'userId'] = user_id
97
+ query_params[:'userSecret'] = user_secret
98
+
99
+ # header parameters
100
+ header_params = opts[:header_params] || {}
101
+ # HTTP header 'Accept' (if needed)
102
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
103
+ # HTTP header 'Content-Type'
104
+ content_type = @api_client.select_header_content_type(['application/json'])
105
+ if !content_type.nil?
106
+ header_params['Content-Type'] = content_type
107
+ end
108
+
109
+ # form parameters
110
+ form_params = opts[:form_params] || {}
111
+
112
+ # http body (model)
113
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(trading_cancel_user_account_order_request)
114
+
115
+ # return_type
116
+ return_type = opts[:debug_return_type] || 'AccountOrderRecord'
117
+
118
+ # auth_names
119
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
120
+
121
+ new_options = opts.merge(
122
+ :operation => :"TradingApi.cancel_user_account_order",
123
+ :header_params => header_params,
124
+ :query_params => query_params,
125
+ :form_params => form_params,
126
+ :body => post_body,
127
+ :auth_names => auth_names,
128
+ :return_type => return_type
129
+ )
130
+
131
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
132
+ if @api_client.config.debugging
133
+ @api_client.config.logger.debug "API called: TradingApi#cancel_user_account_order\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
134
+ end
135
+ return data, status_code, headers, response
136
+ end
137
+
138
+
139
+ # Return details of a specific trade before it's placed
140
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
141
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
142
+ # @param trade_id [String] The ID of trade object
143
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
144
+ def get_calculated_trade_impact_by_id(portfolio_group_id:, calculated_trade_id:, trade_id:, extra: {})
145
+
146
+ data, _status_code, _headers = get_calculated_trade_impact_by_id_with_http_info_impl(portfolio_group_id, calculated_trade_id, trade_id, extra)
147
+ data
148
+ end
149
+
150
+ # Return details of a specific trade before it's placed
151
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
152
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
153
+ # @param trade_id [String] The ID of trade object
154
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
155
+ def get_calculated_trade_impact_by_id_with_http_info(portfolio_group_id:, calculated_trade_id:, trade_id:, extra: {})
156
+
157
+ get_calculated_trade_impact_by_id_with_http_info_impl(portfolio_group_id, calculated_trade_id, trade_id, extra)
158
+ end
159
+
160
+ # Return details of a specific trade before it's placed
161
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
162
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
163
+ # @param trade_id [String] The ID of trade object
164
+ # @param [Hash] opts the optional parameters
165
+ # @return [Trade]
166
+ def get_calculated_trade_impact_by_id_impl(portfolio_group_id, calculated_trade_id, trade_id, opts = {})
167
+ data, _status_code, _headers = get_calculated_trade_impact_by_id_with_http_info(portfolio_group_id, calculated_trade_id, trade_id, opts)
168
+ data
169
+ end
170
+
171
+ # Return details of a specific trade before it&#39;s placed
172
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
173
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
174
+ # @param trade_id [String] The ID of trade object
175
+ # @param [Hash] opts the optional parameters
176
+ # @return [Array<(Trade, Integer, Hash)>] Trade data, response status code and response headers
177
+ def get_calculated_trade_impact_by_id_with_http_info_impl(portfolio_group_id, calculated_trade_id, trade_id, opts = {})
178
+ if @api_client.config.debugging
179
+ @api_client.config.logger.debug 'Calling API: TradingApi.get_calculated_trade_impact_by_id ...'
180
+ end
181
+ # verify the required parameter 'portfolio_group_id' is set
182
+ if @api_client.config.client_side_validation && portfolio_group_id.nil?
183
+ fail ArgumentError, "Missing the required parameter 'portfolio_group_id' when calling TradingApi.get_calculated_trade_impact_by_id"
184
+ end
185
+ # verify the required parameter 'calculated_trade_id' is set
186
+ if @api_client.config.client_side_validation && calculated_trade_id.nil?
187
+ fail ArgumentError, "Missing the required parameter 'calculated_trade_id' when calling TradingApi.get_calculated_trade_impact_by_id"
188
+ end
189
+ # verify the required parameter 'trade_id' is set
190
+ if @api_client.config.client_side_validation && trade_id.nil?
191
+ fail ArgumentError, "Missing the required parameter 'trade_id' when calling TradingApi.get_calculated_trade_impact_by_id"
192
+ end
193
+ # resource path
194
+ local_var_path = '/portfolioGroups/{portfolioGroupId}/calculatedtrades/{calculatedTradeId}/modify/{tradeId}'.sub('{' + 'portfolioGroupId' + '}', CGI.escape(portfolio_group_id.to_s)).sub('{' + 'calculatedTradeId' + '}', CGI.escape(calculated_trade_id.to_s)).sub('{' + 'tradeId' + '}', CGI.escape(trade_id.to_s))
195
+
196
+ # query parameters
197
+ query_params = opts[:query_params] || {}
198
+
199
+ # header parameters
200
+ header_params = opts[:header_params] || {}
201
+ # HTTP header 'Accept' (if needed)
202
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
203
+
204
+ # form parameters
205
+ form_params = opts[:form_params] || {}
206
+
207
+ # http body (model)
208
+ post_body = opts[:debug_body]
209
+
210
+ # return_type
211
+ return_type = opts[:debug_return_type] || 'Trade'
212
+
213
+ # auth_names
214
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
215
+
216
+ new_options = opts.merge(
217
+ :operation => :"TradingApi.get_calculated_trade_impact_by_id",
218
+ :header_params => header_params,
219
+ :query_params => query_params,
220
+ :form_params => form_params,
221
+ :body => post_body,
222
+ :auth_names => auth_names,
223
+ :return_type => return_type
224
+ )
225
+
226
+ data, status_code, headers, response = @api_client.call_api(:GET, local_var_path, new_options)
227
+ if @api_client.config.debugging
228
+ @api_client.config.logger.debug "API called: TradingApi#get_calculated_trade_impact_by_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
229
+ end
230
+ return data, status_code, headers, response
231
+ end
232
+
233
+
234
+ # Return the impact of placing a series of trades on the portfolio
235
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
236
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
237
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
238
+ def get_calculated_trades_impact(portfolio_group_id:, calculated_trade_id:, extra: {})
239
+
240
+ data, _status_code, _headers = get_calculated_trades_impact_with_http_info_impl(portfolio_group_id, calculated_trade_id, extra)
241
+ data
242
+ end
243
+
244
+ # Return the impact of placing a series of trades on the portfolio
245
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
246
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
247
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
248
+ def get_calculated_trades_impact_with_http_info(portfolio_group_id:, calculated_trade_id:, extra: {})
249
+
250
+ get_calculated_trades_impact_with_http_info_impl(portfolio_group_id, calculated_trade_id, extra)
251
+ end
252
+
253
+ # Return the impact of placing a series of trades on the portfolio
254
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
255
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
256
+ # @param [Hash] opts the optional parameters
257
+ # @return [Array<TradeImpact>]
258
+ def get_calculated_trades_impact_impl(portfolio_group_id, calculated_trade_id, opts = {})
259
+ data, _status_code, _headers = get_calculated_trades_impact_with_http_info(portfolio_group_id, calculated_trade_id, opts)
260
+ data
261
+ end
262
+
263
+ # Return the impact of placing a series of trades on the portfolio
264
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
265
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
266
+ # @param [Hash] opts the optional parameters
267
+ # @return [Array<(Array<TradeImpact>, Integer, Hash)>] Array<TradeImpact> data, response status code and response headers
268
+ def get_calculated_trades_impact_with_http_info_impl(portfolio_group_id, calculated_trade_id, opts = {})
269
+ if @api_client.config.debugging
270
+ @api_client.config.logger.debug 'Calling API: TradingApi.get_calculated_trades_impact ...'
271
+ end
272
+ # verify the required parameter 'portfolio_group_id' is set
273
+ if @api_client.config.client_side_validation && portfolio_group_id.nil?
274
+ fail ArgumentError, "Missing the required parameter 'portfolio_group_id' when calling TradingApi.get_calculated_trades_impact"
275
+ end
276
+ # verify the required parameter 'calculated_trade_id' is set
277
+ if @api_client.config.client_side_validation && calculated_trade_id.nil?
278
+ fail ArgumentError, "Missing the required parameter 'calculated_trade_id' when calling TradingApi.get_calculated_trades_impact"
279
+ end
280
+ # resource path
281
+ local_var_path = '/portfolioGroups/{portfolioGroupId}/calculatedtrades/{calculatedTradeId}/impact'.sub('{' + 'portfolioGroupId' + '}', CGI.escape(portfolio_group_id.to_s)).sub('{' + 'calculatedTradeId' + '}', CGI.escape(calculated_trade_id.to_s))
282
+
283
+ # query parameters
284
+ query_params = opts[:query_params] || {}
285
+
286
+ # header parameters
287
+ header_params = opts[:header_params] || {}
288
+ # HTTP header 'Accept' (if needed)
289
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
290
+
291
+ # form parameters
292
+ form_params = opts[:form_params] || {}
293
+
294
+ # http body (model)
295
+ post_body = opts[:debug_body]
296
+
297
+ # return_type
298
+ return_type = opts[:debug_return_type] || 'Array<TradeImpact>'
299
+
300
+ # auth_names
301
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
302
+
303
+ new_options = opts.merge(
304
+ :operation => :"TradingApi.get_calculated_trades_impact",
305
+ :header_params => header_params,
306
+ :query_params => query_params,
307
+ :form_params => form_params,
308
+ :body => post_body,
309
+ :auth_names => auth_names,
310
+ :return_type => return_type
311
+ )
312
+
313
+ data, status_code, headers, response = @api_client.call_api(:GET, local_var_path, new_options)
314
+ if @api_client.config.debugging
315
+ @api_client.config.logger.debug "API called: TradingApi#get_calculated_trades_impact\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
316
+ end
317
+ return data, status_code, headers, response
318
+ end
319
+
320
+
321
+ # Check impact of trades on account.
322
+ # @param user_id [String]
323
+ # @param user_secret [String]
324
+ # @param account_id [String]
325
+ # @param action [Action]
326
+ # @param order_type [OrderType]
327
+ # @param price [Float] Trade Price if limit or stop limit order
328
+ # @param stop [Float] Stop Price. If stop loss or stop limit order, the price to trigger the stop
329
+ # @param time_in_force [TimeInForce]
330
+ # @param units [Float] Trade Units
331
+ # @param universal_symbol_id [String]
332
+ # @param body [ManualTradeForm]
333
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
334
+ def get_order_impact(user_id:, user_secret:, account_id: SENTINEL, action: SENTINEL, order_type: SENTINEL, price: SENTINEL, stop: SENTINEL, time_in_force: SENTINEL, units: SENTINEL, universal_symbol_id: SENTINEL, extra: {})
335
+ _body = {}
336
+ _body[:account_id] = account_id if account_id != SENTINEL
337
+ _body[:action] = action if action != SENTINEL
338
+ _body[:order_type] = order_type if order_type != SENTINEL
339
+ _body[:price] = price if price != SENTINEL
340
+ _body[:stop] = stop if stop != SENTINEL
341
+ _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
342
+ _body[:units] = units if units != SENTINEL
343
+ _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
344
+ manual_trade_form = _body
345
+
346
+ data, _status_code, _headers = get_order_impact_with_http_info_impl(user_id, user_secret, manual_trade_form, extra)
347
+ data
348
+ end
349
+
350
+ # Check impact of trades on account.
351
+ # @param user_id [String]
352
+ # @param user_secret [String]
353
+ # @param account_id [String]
354
+ # @param action [Action]
355
+ # @param order_type [OrderType]
356
+ # @param price [Float] Trade Price if limit or stop limit order
357
+ # @param stop [Float] Stop Price. If stop loss or stop limit order, the price to trigger the stop
358
+ # @param time_in_force [TimeInForce]
359
+ # @param units [Float] Trade Units
360
+ # @param universal_symbol_id [String]
361
+ # @param body [ManualTradeForm]
362
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
363
+ def get_order_impact_with_http_info(user_id:, user_secret:, account_id: SENTINEL, action: SENTINEL, order_type: SENTINEL, price: SENTINEL, stop: SENTINEL, time_in_force: SENTINEL, units: SENTINEL, universal_symbol_id: SENTINEL, extra: {})
364
+ _body = {}
365
+ _body[:account_id] = account_id if account_id != SENTINEL
366
+ _body[:action] = action if action != SENTINEL
367
+ _body[:order_type] = order_type if order_type != SENTINEL
368
+ _body[:price] = price if price != SENTINEL
369
+ _body[:stop] = stop if stop != SENTINEL
370
+ _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
371
+ _body[:units] = units if units != SENTINEL
372
+ _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
373
+ manual_trade_form = _body
374
+
375
+ get_order_impact_with_http_info_impl(user_id, user_secret, manual_trade_form, extra)
376
+ end
377
+
378
+ # Check impact of trades on account.
379
+ # @param user_id [String]
380
+ # @param user_secret [String]
381
+ # @param manual_trade_form [ManualTradeForm]
382
+ # @param [Hash] opts the optional parameters
383
+ # @return [ManualTradeAndImpact]
384
+ def get_order_impact_impl(user_id, user_secret, manual_trade_form, opts = {})
385
+ data, _status_code, _headers = get_order_impact_with_http_info(user_id, user_secret, manual_trade_form, opts)
386
+ data
387
+ end
388
+
389
+ # Check impact of trades on account.
390
+ # @param user_id [String]
391
+ # @param user_secret [String]
392
+ # @param manual_trade_form [ManualTradeForm]
393
+ # @param [Hash] opts the optional parameters
394
+ # @return [Array<(ManualTradeAndImpact, Integer, Hash)>] ManualTradeAndImpact data, response status code and response headers
395
+ def get_order_impact_with_http_info_impl(user_id, user_secret, manual_trade_form, opts = {})
396
+ if @api_client.config.debugging
397
+ @api_client.config.logger.debug 'Calling API: TradingApi.get_order_impact ...'
398
+ end
399
+ # verify the required parameter 'user_id' is set
400
+ if @api_client.config.client_side_validation && user_id.nil?
401
+ fail ArgumentError, "Missing the required parameter 'user_id' when calling TradingApi.get_order_impact"
402
+ end
403
+ # verify the required parameter 'user_secret' is set
404
+ if @api_client.config.client_side_validation && user_secret.nil?
405
+ fail ArgumentError, "Missing the required parameter 'user_secret' when calling TradingApi.get_order_impact"
406
+ end
407
+ # verify the required parameter 'manual_trade_form' is set
408
+ if @api_client.config.client_side_validation && manual_trade_form.nil?
409
+ fail ArgumentError, "Missing the required parameter 'manual_trade_form' when calling TradingApi.get_order_impact"
410
+ end
411
+ # resource path
412
+ local_var_path = '/trade/impact'
413
+
414
+ # query parameters
415
+ query_params = opts[:query_params] || {}
416
+ query_params[:'userId'] = user_id
417
+ query_params[:'userSecret'] = user_secret
418
+
419
+ # header parameters
420
+ header_params = opts[:header_params] || {}
421
+ # HTTP header 'Accept' (if needed)
422
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
423
+ # HTTP header 'Content-Type'
424
+ content_type = @api_client.select_header_content_type(['application/json'])
425
+ if !content_type.nil?
426
+ header_params['Content-Type'] = content_type
427
+ end
428
+
429
+ # form parameters
430
+ form_params = opts[:form_params] || {}
431
+
432
+ # http body (model)
433
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(manual_trade_form)
434
+
435
+ # return_type
436
+ return_type = opts[:debug_return_type] || 'ManualTradeAndImpact'
437
+
438
+ # auth_names
439
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
440
+
441
+ new_options = opts.merge(
442
+ :operation => :"TradingApi.get_order_impact",
443
+ :header_params => header_params,
444
+ :query_params => query_params,
445
+ :form_params => form_params,
446
+ :body => post_body,
447
+ :auth_names => auth_names,
448
+ :return_type => return_type
449
+ )
450
+
451
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
452
+ if @api_client.config.debugging
453
+ @api_client.config.logger.debug "API called: TradingApi#get_order_impact\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
454
+ end
455
+ return data, status_code, headers, response
456
+ end
457
+
458
+
459
+ # Get symbol quotes
460
+ # @param user_id [String]
461
+ # @param user_secret [String]
462
+ # @param symbols [String] List of universal_symbol_id or tickers to get quotes for.
463
+ # @param account_id [String] The ID of the account to get quotes.
464
+ # @param use_ticker [Boolean] Should be set to True if providing tickers.
465
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
466
+ def get_user_account_quotes(user_id:, user_secret:, symbols:, account_id:, use_ticker: SENTINEL, extra: {})
467
+ extra[:use_ticker] = use_ticker if use_ticker != SENTINEL
468
+
469
+ data, _status_code, _headers = get_user_account_quotes_with_http_info_impl(user_id, user_secret, symbols, account_id, extra)
470
+ data
471
+ end
472
+
473
+ # Get symbol quotes
474
+ # @param user_id [String]
475
+ # @param user_secret [String]
476
+ # @param symbols [String] List of universal_symbol_id or tickers to get quotes for.
477
+ # @param account_id [String] The ID of the account to get quotes.
478
+ # @param use_ticker [Boolean] Should be set to True if providing tickers.
479
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
480
+ def get_user_account_quotes_with_http_info(user_id:, user_secret:, symbols:, account_id:, use_ticker: SENTINEL, extra: {})
481
+ extra[:use_ticker] = use_ticker if use_ticker != SENTINEL
482
+
483
+ get_user_account_quotes_with_http_info_impl(user_id, user_secret, symbols, account_id, extra)
484
+ end
485
+
486
+ # Get symbol quotes
487
+ # @param user_id [String]
488
+ # @param user_secret [String]
489
+ # @param symbols [String] List of universal_symbol_id or tickers to get quotes for.
490
+ # @param account_id [String] The ID of the account to get quotes.
491
+ # @param [Hash] opts the optional parameters
492
+ # @option opts [Boolean] :use_ticker Should be set to True if providing tickers.
493
+ # @return [SymbolsQuotes]
494
+ def get_user_account_quotes_impl(user_id, user_secret, symbols, account_id, opts = {})
495
+ data, _status_code, _headers = get_user_account_quotes_with_http_info(user_id, user_secret, symbols, account_id, opts)
496
+ data
497
+ end
498
+
499
+ # Get symbol quotes
500
+ # @param user_id [String]
501
+ # @param user_secret [String]
502
+ # @param symbols [String] List of universal_symbol_id or tickers to get quotes for.
503
+ # @param account_id [String] The ID of the account to get quotes.
504
+ # @param [Hash] opts the optional parameters
505
+ # @option opts [Boolean] :use_ticker Should be set to True if providing tickers.
506
+ # @return [Array<(SymbolsQuotes, Integer, Hash)>] SymbolsQuotes data, response status code and response headers
507
+ def get_user_account_quotes_with_http_info_impl(user_id, user_secret, symbols, account_id, opts = {})
508
+ if @api_client.config.debugging
509
+ @api_client.config.logger.debug 'Calling API: TradingApi.get_user_account_quotes ...'
510
+ end
511
+ # verify the required parameter 'user_id' is set
512
+ if @api_client.config.client_side_validation && user_id.nil?
513
+ fail ArgumentError, "Missing the required parameter 'user_id' when calling TradingApi.get_user_account_quotes"
514
+ end
515
+ # verify the required parameter 'user_secret' is set
516
+ if @api_client.config.client_side_validation && user_secret.nil?
517
+ fail ArgumentError, "Missing the required parameter 'user_secret' when calling TradingApi.get_user_account_quotes"
518
+ end
519
+ # verify the required parameter 'symbols' is set
520
+ if @api_client.config.client_side_validation && symbols.nil?
521
+ fail ArgumentError, "Missing the required parameter 'symbols' when calling TradingApi.get_user_account_quotes"
522
+ end
523
+ # verify the required parameter 'account_id' is set
524
+ if @api_client.config.client_side_validation && account_id.nil?
525
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling TradingApi.get_user_account_quotes"
526
+ end
527
+ # resource path
528
+ local_var_path = '/accounts/{accountId}/quotes'.sub('{' + 'accountId' + '}', CGI.escape(account_id.to_s))
529
+
530
+ # query parameters
531
+ query_params = opts[:query_params] || {}
532
+ query_params[:'userId'] = user_id
533
+ query_params[:'userSecret'] = user_secret
534
+ query_params[:'symbols'] = symbols
535
+ query_params[:'use_ticker'] = opts[:'use_ticker'] if !opts[:'use_ticker'].nil?
536
+
537
+ # header parameters
538
+ header_params = opts[:header_params] || {}
539
+ # HTTP header 'Accept' (if needed)
540
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
541
+
542
+ # form parameters
543
+ form_params = opts[:form_params] || {}
544
+
545
+ # http body (model)
546
+ post_body = opts[:debug_body]
547
+
548
+ # return_type
549
+ return_type = opts[:debug_return_type] || 'SymbolsQuotes'
550
+
551
+ # auth_names
552
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
553
+
554
+ new_options = opts.merge(
555
+ :operation => :"TradingApi.get_user_account_quotes",
556
+ :header_params => header_params,
557
+ :query_params => query_params,
558
+ :form_params => form_params,
559
+ :body => post_body,
560
+ :auth_names => auth_names,
561
+ :return_type => return_type
562
+ )
563
+
564
+ data, status_code, headers, response = @api_client.call_api(:GET, local_var_path, new_options)
565
+ if @api_client.config.debugging
566
+ @api_client.config.logger.debug "API called: TradingApi#get_user_account_quotes\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
567
+ end
568
+ return data, status_code, headers, response
569
+ end
570
+
571
+
572
+ # Modify units of a trade before it is placed
573
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
574
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
575
+ # @param trade_id [String] The ID of trade object
576
+ # @param id [String]
577
+ # @param account [Account]
578
+ # @param symbol [BrokerageSymbol]
579
+ # @param universal_symbol [UniversalSymbol]
580
+ # @param action [TradeAction]
581
+ # @param units [Integer]
582
+ # @param price [Float]
583
+ # @param sequence [Integer]
584
+ # @param body [Trade]
585
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
586
+ def modify_calculated_trade_by_id(portfolio_group_id:, calculated_trade_id:, trade_id:, id: SENTINEL, account: SENTINEL, symbol: SENTINEL, universal_symbol: SENTINEL, action: SENTINEL, units: SENTINEL, price: SENTINEL, sequence: SENTINEL, extra: {})
587
+ _body = {}
588
+ _body[:id] = id if id != SENTINEL
589
+ _body[:account] = account if account != SENTINEL
590
+ _body[:symbol] = symbol if symbol != SENTINEL
591
+ _body[:universal_symbol] = universal_symbol if universal_symbol != SENTINEL
592
+ _body[:action] = action if action != SENTINEL
593
+ _body[:units] = units if units != SENTINEL
594
+ _body[:price] = price if price != SENTINEL
595
+ _body[:sequence] = sequence if sequence != SENTINEL
596
+ extra[:trade] = _body if !_body.empty?
597
+
598
+ data, _status_code, _headers = modify_calculated_trade_by_id_with_http_info_impl(portfolio_group_id, calculated_trade_id, trade_id, extra)
599
+ data
600
+ end
601
+
602
+ # Modify units of a trade before it is placed
603
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
604
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
605
+ # @param trade_id [String] The ID of trade object
606
+ # @param id [String]
607
+ # @param account [Account]
608
+ # @param symbol [BrokerageSymbol]
609
+ # @param universal_symbol [UniversalSymbol]
610
+ # @param action [TradeAction]
611
+ # @param units [Integer]
612
+ # @param price [Float]
613
+ # @param sequence [Integer]
614
+ # @param body [Trade]
615
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
616
+ def modify_calculated_trade_by_id_with_http_info(portfolio_group_id:, calculated_trade_id:, trade_id:, id: SENTINEL, account: SENTINEL, symbol: SENTINEL, universal_symbol: SENTINEL, action: SENTINEL, units: SENTINEL, price: SENTINEL, sequence: SENTINEL, extra: {})
617
+ _body = {}
618
+ _body[:id] = id if id != SENTINEL
619
+ _body[:account] = account if account != SENTINEL
620
+ _body[:symbol] = symbol if symbol != SENTINEL
621
+ _body[:universal_symbol] = universal_symbol if universal_symbol != SENTINEL
622
+ _body[:action] = action if action != SENTINEL
623
+ _body[:units] = units if units != SENTINEL
624
+ _body[:price] = price if price != SENTINEL
625
+ _body[:sequence] = sequence if sequence != SENTINEL
626
+ extra[:trade] = _body if !_body.empty?
627
+
628
+ modify_calculated_trade_by_id_with_http_info_impl(portfolio_group_id, calculated_trade_id, trade_id, extra)
629
+ end
630
+
631
+ # Modify units of a trade before it is placed
632
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
633
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
634
+ # @param trade_id [String] The ID of trade object
635
+ # @param [Hash] opts the optional parameters
636
+ # @option opts [Trade] :trade
637
+ # @return [Trade]
638
+ def modify_calculated_trade_by_id_impl(portfolio_group_id, calculated_trade_id, trade_id, opts = {})
639
+ data, _status_code, _headers = modify_calculated_trade_by_id_with_http_info(portfolio_group_id, calculated_trade_id, trade_id, opts)
640
+ data
641
+ end
642
+
643
+ # Modify units of a trade before it is placed
644
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
645
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
646
+ # @param trade_id [String] The ID of trade object
647
+ # @param [Hash] opts the optional parameters
648
+ # @option opts [Trade] :trade
649
+ # @return [Array<(Trade, Integer, Hash)>] Trade data, response status code and response headers
650
+ def modify_calculated_trade_by_id_with_http_info_impl(portfolio_group_id, calculated_trade_id, trade_id, opts = {})
651
+ if @api_client.config.debugging
652
+ @api_client.config.logger.debug 'Calling API: TradingApi.modify_calculated_trade_by_id ...'
653
+ end
654
+ # verify the required parameter 'portfolio_group_id' is set
655
+ if @api_client.config.client_side_validation && portfolio_group_id.nil?
656
+ fail ArgumentError, "Missing the required parameter 'portfolio_group_id' when calling TradingApi.modify_calculated_trade_by_id"
657
+ end
658
+ # verify the required parameter 'calculated_trade_id' is set
659
+ if @api_client.config.client_side_validation && calculated_trade_id.nil?
660
+ fail ArgumentError, "Missing the required parameter 'calculated_trade_id' when calling TradingApi.modify_calculated_trade_by_id"
661
+ end
662
+ # verify the required parameter 'trade_id' is set
663
+ if @api_client.config.client_side_validation && trade_id.nil?
664
+ fail ArgumentError, "Missing the required parameter 'trade_id' when calling TradingApi.modify_calculated_trade_by_id"
665
+ end
666
+ # resource path
667
+ local_var_path = '/portfolioGroups/{portfolioGroupId}/calculatedtrades/{calculatedTradeId}/modify/{tradeId}'.sub('{' + 'portfolioGroupId' + '}', CGI.escape(portfolio_group_id.to_s)).sub('{' + 'calculatedTradeId' + '}', CGI.escape(calculated_trade_id.to_s)).sub('{' + 'tradeId' + '}', CGI.escape(trade_id.to_s))
668
+
669
+ # query parameters
670
+ query_params = opts[:query_params] || {}
671
+
672
+ # header parameters
673
+ header_params = opts[:header_params] || {}
674
+ # HTTP header 'Accept' (if needed)
675
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
676
+ # HTTP header 'Content-Type'
677
+ content_type = @api_client.select_header_content_type(['application/json'])
678
+ if !content_type.nil?
679
+ header_params['Content-Type'] = content_type
680
+ end
681
+
682
+ # form parameters
683
+ form_params = opts[:form_params] || {}
684
+
685
+ # http body (model)
686
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(opts[:'trade'])
687
+
688
+ # return_type
689
+ return_type = opts[:debug_return_type] || 'Trade'
690
+
691
+ # auth_names
692
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
693
+
694
+ new_options = opts.merge(
695
+ :operation => :"TradingApi.modify_calculated_trade_by_id",
696
+ :header_params => header_params,
697
+ :query_params => query_params,
698
+ :form_params => form_params,
699
+ :body => post_body,
700
+ :auth_names => auth_names,
701
+ :return_type => return_type
702
+ )
703
+
704
+ data, status_code, headers, response = @api_client.call_api(:PATCH, local_var_path, new_options)
705
+ if @api_client.config.debugging
706
+ @api_client.config.logger.debug "API called: TradingApi#modify_calculated_trade_by_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
707
+ end
708
+ return data, status_code, headers, response
709
+ end
710
+
711
+
712
+ # Place orders for the CalculatedTrades in series
713
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
714
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
715
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
716
+ def place_calculated_trades(portfolio_group_id:, calculated_trade_id:, extra: {})
717
+
718
+ data, _status_code, _headers = place_calculated_trades_with_http_info_impl(portfolio_group_id, calculated_trade_id, extra)
719
+ data
720
+ end
721
+
722
+ # Place orders for the CalculatedTrades in series
723
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
724
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
725
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
726
+ def place_calculated_trades_with_http_info(portfolio_group_id:, calculated_trade_id:, extra: {})
727
+
728
+ place_calculated_trades_with_http_info_impl(portfolio_group_id, calculated_trade_id, extra)
729
+ end
730
+
731
+ # Place orders for the CalculatedTrades in series
732
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
733
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
734
+ # @param [Hash] opts the optional parameters
735
+ # @return [Array<TradeExecutionStatus>]
736
+ def place_calculated_trades_impl(portfolio_group_id, calculated_trade_id, opts = {})
737
+ data, _status_code, _headers = place_calculated_trades_with_http_info(portfolio_group_id, calculated_trade_id, opts)
738
+ data
739
+ end
740
+
741
+ # Place orders for the CalculatedTrades in series
742
+ # @param portfolio_group_id [String] The ID of the PortfolioGroup to perform rebalancing calculations
743
+ # @param calculated_trade_id [String] The ID of calculated trade to get account impact
744
+ # @param [Hash] opts the optional parameters
745
+ # @return [Array<(Array<TradeExecutionStatus>, Integer, Hash)>] Array<TradeExecutionStatus> data, response status code and response headers
746
+ def place_calculated_trades_with_http_info_impl(portfolio_group_id, calculated_trade_id, opts = {})
747
+ if @api_client.config.debugging
748
+ @api_client.config.logger.debug 'Calling API: TradingApi.place_calculated_trades ...'
749
+ end
750
+ # verify the required parameter 'portfolio_group_id' is set
751
+ if @api_client.config.client_side_validation && portfolio_group_id.nil?
752
+ fail ArgumentError, "Missing the required parameter 'portfolio_group_id' when calling TradingApi.place_calculated_trades"
753
+ end
754
+ # verify the required parameter 'calculated_trade_id' is set
755
+ if @api_client.config.client_side_validation && calculated_trade_id.nil?
756
+ fail ArgumentError, "Missing the required parameter 'calculated_trade_id' when calling TradingApi.place_calculated_trades"
757
+ end
758
+ # resource path
759
+ local_var_path = '/portfolioGroups/{portfolioGroupId}/calculatedtrades/{calculatedTradeId}/placeOrders'.sub('{' + 'portfolioGroupId' + '}', CGI.escape(portfolio_group_id.to_s)).sub('{' + 'calculatedTradeId' + '}', CGI.escape(calculated_trade_id.to_s))
760
+
761
+ # query parameters
762
+ query_params = opts[:query_params] || {}
763
+
764
+ # header parameters
765
+ header_params = opts[:header_params] || {}
766
+ # HTTP header 'Accept' (if needed)
767
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
768
+
769
+ # form parameters
770
+ form_params = opts[:form_params] || {}
771
+
772
+ # http body (model)
773
+ post_body = opts[:debug_body]
774
+
775
+ # return_type
776
+ return_type = opts[:debug_return_type] || 'Array<TradeExecutionStatus>'
777
+
778
+ # auth_names
779
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
780
+
781
+ new_options = opts.merge(
782
+ :operation => :"TradingApi.place_calculated_trades",
783
+ :header_params => header_params,
784
+ :query_params => query_params,
785
+ :form_params => form_params,
786
+ :body => post_body,
787
+ :auth_names => auth_names,
788
+ :return_type => return_type
789
+ )
790
+
791
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
792
+ if @api_client.config.debugging
793
+ @api_client.config.logger.debug "API called: TradingApi#place_calculated_trades\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
794
+ end
795
+ return data, status_code, headers, response
796
+ end
797
+
798
+
799
+ # Place a trade with NO validation.
800
+ # @param user_id [String]
801
+ # @param user_secret [String]
802
+ # @param account_id [String]
803
+ # @param action [Action]
804
+ # @param order_type [OrderType]
805
+ # @param price [Float] Trade Price if limit or stop limit order
806
+ # @param stop [Float] Stop Price. If stop loss or stop limit order, the price to trigger the stop
807
+ # @param time_in_force [TimeInForce]
808
+ # @param units [Float] Trade Units
809
+ # @param universal_symbol_id [String]
810
+ # @param body [ManualTradeForm]
811
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
812
+ def place_force_order(user_id:, user_secret:, account_id: SENTINEL, action: SENTINEL, order_type: SENTINEL, price: SENTINEL, stop: SENTINEL, time_in_force: SENTINEL, units: SENTINEL, universal_symbol_id: SENTINEL, extra: {})
813
+ _body = {}
814
+ _body[:account_id] = account_id if account_id != SENTINEL
815
+ _body[:action] = action if action != SENTINEL
816
+ _body[:order_type] = order_type if order_type != SENTINEL
817
+ _body[:price] = price if price != SENTINEL
818
+ _body[:stop] = stop if stop != SENTINEL
819
+ _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
820
+ _body[:units] = units if units != SENTINEL
821
+ _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
822
+ manual_trade_form = _body
823
+
824
+ data, _status_code, _headers = place_force_order_with_http_info_impl(user_id, user_secret, manual_trade_form, extra)
825
+ data
826
+ end
827
+
828
+ # Place a trade with NO validation.
829
+ # @param user_id [String]
830
+ # @param user_secret [String]
831
+ # @param account_id [String]
832
+ # @param action [Action]
833
+ # @param order_type [OrderType]
834
+ # @param price [Float] Trade Price if limit or stop limit order
835
+ # @param stop [Float] Stop Price. If stop loss or stop limit order, the price to trigger the stop
836
+ # @param time_in_force [TimeInForce]
837
+ # @param units [Float] Trade Units
838
+ # @param universal_symbol_id [String]
839
+ # @param body [ManualTradeForm]
840
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
841
+ def place_force_order_with_http_info(user_id:, user_secret:, account_id: SENTINEL, action: SENTINEL, order_type: SENTINEL, price: SENTINEL, stop: SENTINEL, time_in_force: SENTINEL, units: SENTINEL, universal_symbol_id: SENTINEL, extra: {})
842
+ _body = {}
843
+ _body[:account_id] = account_id if account_id != SENTINEL
844
+ _body[:action] = action if action != SENTINEL
845
+ _body[:order_type] = order_type if order_type != SENTINEL
846
+ _body[:price] = price if price != SENTINEL
847
+ _body[:stop] = stop if stop != SENTINEL
848
+ _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
849
+ _body[:units] = units if units != SENTINEL
850
+ _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
851
+ manual_trade_form = _body
852
+
853
+ place_force_order_with_http_info_impl(user_id, user_secret, manual_trade_form, extra)
854
+ end
855
+
856
+ # Place a trade with NO validation.
857
+ # @param user_id [String]
858
+ # @param user_secret [String]
859
+ # @param manual_trade_form [ManualTradeForm]
860
+ # @param [Hash] opts the optional parameters
861
+ # @return [AccountOrderRecord]
862
+ def place_force_order_impl(user_id, user_secret, manual_trade_form, opts = {})
863
+ data, _status_code, _headers = place_force_order_with_http_info(user_id, user_secret, manual_trade_form, opts)
864
+ data
865
+ end
866
+
867
+ # Place a trade with NO validation.
868
+ # @param user_id [String]
869
+ # @param user_secret [String]
870
+ # @param manual_trade_form [ManualTradeForm]
871
+ # @param [Hash] opts the optional parameters
872
+ # @return [Array<(AccountOrderRecord, Integer, Hash)>] AccountOrderRecord data, response status code and response headers
873
+ def place_force_order_with_http_info_impl(user_id, user_secret, manual_trade_form, opts = {})
874
+ if @api_client.config.debugging
875
+ @api_client.config.logger.debug 'Calling API: TradingApi.place_force_order ...'
876
+ end
877
+ # verify the required parameter 'user_id' is set
878
+ if @api_client.config.client_side_validation && user_id.nil?
879
+ fail ArgumentError, "Missing the required parameter 'user_id' when calling TradingApi.place_force_order"
880
+ end
881
+ # verify the required parameter 'user_secret' is set
882
+ if @api_client.config.client_side_validation && user_secret.nil?
883
+ fail ArgumentError, "Missing the required parameter 'user_secret' when calling TradingApi.place_force_order"
884
+ end
885
+ # verify the required parameter 'manual_trade_form' is set
886
+ if @api_client.config.client_side_validation && manual_trade_form.nil?
887
+ fail ArgumentError, "Missing the required parameter 'manual_trade_form' when calling TradingApi.place_force_order"
888
+ end
889
+ # resource path
890
+ local_var_path = '/trade/place'
891
+
892
+ # query parameters
893
+ query_params = opts[:query_params] || {}
894
+ query_params[:'userId'] = user_id
895
+ query_params[:'userSecret'] = user_secret
896
+
897
+ # header parameters
898
+ header_params = opts[:header_params] || {}
899
+ # HTTP header 'Accept' (if needed)
900
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
901
+ # HTTP header 'Content-Type'
902
+ content_type = @api_client.select_header_content_type(['application/json'])
903
+ if !content_type.nil?
904
+ header_params['Content-Type'] = content_type
905
+ end
906
+
907
+ # form parameters
908
+ form_params = opts[:form_params] || {}
909
+
910
+ # http body (model)
911
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(manual_trade_form)
912
+
913
+ # return_type
914
+ return_type = opts[:debug_return_type] || 'AccountOrderRecord'
915
+
916
+ # auth_names
917
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
918
+
919
+ new_options = opts.merge(
920
+ :operation => :"TradingApi.place_force_order",
921
+ :header_params => header_params,
922
+ :query_params => query_params,
923
+ :form_params => form_params,
924
+ :body => post_body,
925
+ :auth_names => auth_names,
926
+ :return_type => return_type
927
+ )
928
+
929
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
930
+ if @api_client.config.debugging
931
+ @api_client.config.logger.debug "API called: TradingApi#place_force_order\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
932
+ end
933
+ return data, status_code, headers, response
934
+ end
935
+
936
+
937
+ # Place a OCO (One Cancels Other) order
938
+ # @param user_id [String]
939
+ # @param user_secret [String]
940
+ # @param first_trade_id [Object] The ID of first trade object obtained from trade/impact endpoint
941
+ # @param second_trade_id [Object] The ID of second trade object obtained from trade/impact endpoint
942
+ # @param body [TradingPlaceOCOOrderRequest]
943
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
944
+ def place_oco_order(user_id:, user_secret:, first_trade_id: SENTINEL, second_trade_id: SENTINEL, extra: {})
945
+ _body = {}
946
+ _body[:first_trade_id] = first_trade_id if first_trade_id != SENTINEL
947
+ _body[:second_trade_id] = second_trade_id if second_trade_id != SENTINEL
948
+ trading_place_oco_order_request = _body
949
+
950
+ data, _status_code, _headers = place_oco_order_with_http_info_impl(user_id, user_secret, trading_place_oco_order_request, extra)
951
+ data
952
+ end
953
+
954
+ # Place a OCO (One Cancels Other) order
955
+ # @param user_id [String]
956
+ # @param user_secret [String]
957
+ # @param first_trade_id [Object] The ID of first trade object obtained from trade/impact endpoint
958
+ # @param second_trade_id [Object] The ID of second trade object obtained from trade/impact endpoint
959
+ # @param body [TradingPlaceOCOOrderRequest]
960
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
961
+ def place_oco_order_with_http_info(user_id:, user_secret:, first_trade_id: SENTINEL, second_trade_id: SENTINEL, extra: {})
962
+ _body = {}
963
+ _body[:first_trade_id] = first_trade_id if first_trade_id != SENTINEL
964
+ _body[:second_trade_id] = second_trade_id if second_trade_id != SENTINEL
965
+ trading_place_oco_order_request = _body
966
+
967
+ place_oco_order_with_http_info_impl(user_id, user_secret, trading_place_oco_order_request, extra)
968
+ end
969
+
970
+ # Place a OCO (One Cancels Other) order
971
+ # @param user_id [String]
972
+ # @param user_secret [String]
973
+ # @param trading_place_oco_order_request [TradingPlaceOCOOrderRequest]
974
+ # @param [Hash] opts the optional parameters
975
+ # @return [AccountOrderRecord]
976
+ def place_oco_order_impl(user_id, user_secret, trading_place_oco_order_request, opts = {})
977
+ data, _status_code, _headers = place_oco_order_with_http_info(user_id, user_secret, trading_place_oco_order_request, opts)
978
+ data
979
+ end
980
+
981
+ # Place a OCO (One Cancels Other) order
982
+ # @param user_id [String]
983
+ # @param user_secret [String]
984
+ # @param trading_place_oco_order_request [TradingPlaceOCOOrderRequest]
985
+ # @param [Hash] opts the optional parameters
986
+ # @return [Array<(AccountOrderRecord, Integer, Hash)>] AccountOrderRecord data, response status code and response headers
987
+ def place_oco_order_with_http_info_impl(user_id, user_secret, trading_place_oco_order_request, opts = {})
988
+ if @api_client.config.debugging
989
+ @api_client.config.logger.debug 'Calling API: TradingApi.place_oco_order ...'
990
+ end
991
+ # verify the required parameter 'user_id' is set
992
+ if @api_client.config.client_side_validation && user_id.nil?
993
+ fail ArgumentError, "Missing the required parameter 'user_id' when calling TradingApi.place_oco_order"
994
+ end
995
+ # verify the required parameter 'user_secret' is set
996
+ if @api_client.config.client_side_validation && user_secret.nil?
997
+ fail ArgumentError, "Missing the required parameter 'user_secret' when calling TradingApi.place_oco_order"
998
+ end
999
+ # verify the required parameter 'trading_place_oco_order_request' is set
1000
+ if @api_client.config.client_side_validation && trading_place_oco_order_request.nil?
1001
+ fail ArgumentError, "Missing the required parameter 'trading_place_oco_order_request' when calling TradingApi.place_oco_order"
1002
+ end
1003
+ # resource path
1004
+ local_var_path = '/trade/oco'
1005
+
1006
+ # query parameters
1007
+ query_params = opts[:query_params] || {}
1008
+ query_params[:'userId'] = user_id
1009
+ query_params[:'userSecret'] = user_secret
1010
+
1011
+ # header parameters
1012
+ header_params = opts[:header_params] || {}
1013
+ # HTTP header 'Accept' (if needed)
1014
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1015
+ # HTTP header 'Content-Type'
1016
+ content_type = @api_client.select_header_content_type(['application/json'])
1017
+ if !content_type.nil?
1018
+ header_params['Content-Type'] = content_type
1019
+ end
1020
+
1021
+ # form parameters
1022
+ form_params = opts[:form_params] || {}
1023
+
1024
+ # http body (model)
1025
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(trading_place_oco_order_request)
1026
+
1027
+ # return_type
1028
+ return_type = opts[:debug_return_type] || 'AccountOrderRecord'
1029
+
1030
+ # auth_names
1031
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
1032
+
1033
+ new_options = opts.merge(
1034
+ :operation => :"TradingApi.place_oco_order",
1035
+ :header_params => header_params,
1036
+ :query_params => query_params,
1037
+ :form_params => form_params,
1038
+ :body => post_body,
1039
+ :auth_names => auth_names,
1040
+ :return_type => return_type
1041
+ )
1042
+
1043
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
1044
+ if @api_client.config.debugging
1045
+ @api_client.config.logger.debug "API called: TradingApi#place_oco_order\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1046
+ end
1047
+ return data, status_code, headers, response
1048
+ end
1049
+
1050
+
1051
+ # Place order
1052
+ # @param trade_id [String] The ID of trade object obtained from trade/impact endpoint
1053
+ # @param user_id [String]
1054
+ # @param user_secret [String]
1055
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
1056
+ def place_order(trade_id:, user_id:, user_secret:, extra: {})
1057
+
1058
+ data, _status_code, _headers = place_order_with_http_info_impl(trade_id, user_id, user_secret, extra)
1059
+ data
1060
+ end
1061
+
1062
+ # Place order
1063
+ # @param trade_id [String] The ID of trade object obtained from trade/impact endpoint
1064
+ # @param user_id [String]
1065
+ # @param user_secret [String]
1066
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
1067
+ def place_order_with_http_info(trade_id:, user_id:, user_secret:, extra: {})
1068
+
1069
+ place_order_with_http_info_impl(trade_id, user_id, user_secret, extra)
1070
+ end
1071
+
1072
+ # Place order
1073
+ # @param trade_id [String] The ID of trade object obtained from trade/impact endpoint
1074
+ # @param user_id [String]
1075
+ # @param user_secret [String]
1076
+ # @param [Hash] opts the optional parameters
1077
+ # @return [AccountOrderRecord]
1078
+ def place_order_impl(trade_id, user_id, user_secret, opts = {})
1079
+ data, _status_code, _headers = place_order_with_http_info(trade_id, user_id, user_secret, opts)
1080
+ data
1081
+ end
1082
+
1083
+ # Place order
1084
+ # @param trade_id [String] The ID of trade object obtained from trade/impact endpoint
1085
+ # @param user_id [String]
1086
+ # @param user_secret [String]
1087
+ # @param [Hash] opts the optional parameters
1088
+ # @return [Array<(AccountOrderRecord, Integer, Hash)>] AccountOrderRecord data, response status code and response headers
1089
+ def place_order_with_http_info_impl(trade_id, user_id, user_secret, opts = {})
1090
+ if @api_client.config.debugging
1091
+ @api_client.config.logger.debug 'Calling API: TradingApi.place_order ...'
1092
+ end
1093
+ # verify the required parameter 'trade_id' is set
1094
+ if @api_client.config.client_side_validation && trade_id.nil?
1095
+ fail ArgumentError, "Missing the required parameter 'trade_id' when calling TradingApi.place_order"
1096
+ end
1097
+ # verify the required parameter 'user_id' is set
1098
+ if @api_client.config.client_side_validation && user_id.nil?
1099
+ fail ArgumentError, "Missing the required parameter 'user_id' when calling TradingApi.place_order"
1100
+ end
1101
+ # verify the required parameter 'user_secret' is set
1102
+ if @api_client.config.client_side_validation && user_secret.nil?
1103
+ fail ArgumentError, "Missing the required parameter 'user_secret' when calling TradingApi.place_order"
1104
+ end
1105
+ # resource path
1106
+ local_var_path = '/trade/{tradeId}'.sub('{' + 'tradeId' + '}', CGI.escape(trade_id.to_s))
1107
+
1108
+ # query parameters
1109
+ query_params = opts[:query_params] || {}
1110
+ query_params[:'userId'] = user_id
1111
+ query_params[:'userSecret'] = user_secret
1112
+
1113
+ # header parameters
1114
+ header_params = opts[:header_params] || {}
1115
+ # HTTP header 'Accept' (if needed)
1116
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1117
+
1118
+ # form parameters
1119
+ form_params = opts[:form_params] || {}
1120
+
1121
+ # http body (model)
1122
+ post_body = opts[:debug_body]
1123
+
1124
+ # return_type
1125
+ return_type = opts[:debug_return_type] || 'AccountOrderRecord'
1126
+
1127
+ # auth_names
1128
+ auth_names = opts[:debug_auth_names] || ['PartnerClientId', 'PartnerSignature', 'PartnerTimestamp']
1129
+
1130
+ new_options = opts.merge(
1131
+ :operation => :"TradingApi.place_order",
1132
+ :header_params => header_params,
1133
+ :query_params => query_params,
1134
+ :form_params => form_params,
1135
+ :body => post_body,
1136
+ :auth_names => auth_names,
1137
+ :return_type => return_type
1138
+ )
1139
+
1140
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
1141
+ if @api_client.config.debugging
1142
+ @api_client.config.logger.debug "API called: TradingApi#place_order\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1143
+ end
1144
+ return data, status_code, headers, response
1145
+ end
1146
+ end
1147
+
1148
+ # top-level client access to avoid having the user to insantiate their own API instances
1149
+ Trading = TradingApi::new
1150
+ end