Sample code for 30+ languages & platforms
React Native

ETrade v1 Preview Order

See more HTTP Misc Examples

Gets the order details for a selected brokerage account based on the search criteria provided.

Chilkat React Native Downloads

React Native
import { Http, HttpResponse, JsonObject, Xml } from '@chilkat/react-native'

async function chilkatExample() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  const http = new Http();

  http.oAuth1 = true;
  http.oAuthVerifier = '';
  http.oAuthConsumerKey = 'ETRADE_CONSUMER_KEY';
  http.oAuthConsumerSecret = 'ETRADE_CONSUMER_SECRET';

  // Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2.
  const json = new JsonObject();
  try {
    json.loadFile('qa_data/tokens/etrade.json');
  } catch {
    console.log('Failed to load OAuth1 token');
    return;
  }

  http.oAuthToken = json.stringOf('oauth_token');
  http.oAuthTokenSecret = json.stringOf('oauth_token_secret');

  // See the ETrade v1 API documentation HERE.

  // Sample XML Request
  // Use this online tool to generate the code from sample XML: 
  // Generate Code to Create XML

  // <?xml version="1.0" encoding="UTF-8"?>
  // <PreviewOrderRequest>
  //    <orderType>EQ</orderType>
  //    <clientOrderId>sdfer333</clientOrderId>
  //    <Order>
  //       <allOrNone>false</allOrNone>
  //       <priceType>LIMIT</priceType>
  //       <orderTerm>GOOD_FOR_DAY</orderTerm>
  //       <marketSession>REGULAR</marketSession>
  //       <stopPrice />
  //       <limitPrice>188.51</limitPrice>
  //       <Instrument>
  //          <Product>
  //             <securityType>EQ</securityType>
  //             <symbol>FB</symbol>
  //          </Product>
  //          <orderAction>BUY</orderAction>
  //          <quantityType>QUANTITY</quantityType>
  //          <quantity>10</quantity>
  //       </Instrument>
  //    </Order>
  // </PreviewOrderRequest>

  const xml = new Xml();
  xml.tag = 'PreviewOrderRequest';
  xml.updateChildContent('orderType', 'EQ');
  xml.updateChildContent('clientOrderId', 'sdfer333');
  xml.updateChildContent('Order|allOrNone', 'false');
  xml.updateChildContent('Order|priceType', 'LIMIT');
  xml.updateChildContent('Order|orderTerm', 'GOOD_FOR_DAY');
  xml.updateChildContent('Order|marketSession', 'REGULAR');
  xml.updateChildContent('Order|stopPrice', '');
  xml.updateChildContent('Order|limitPrice', '188.51');
  xml.updateChildContent('Order|Instrument|Product|securityType', 'EQ');
  xml.updateChildContent('Order|Instrument|Product|symbol', 'FB');
  xml.updateChildContent('Order|Instrument|orderAction', 'BUY');
  xml.updateChildContent('Order|Instrument|quantityType', 'QUANTITY');
  xml.updateChildContent('Order|Instrument|quantity', '10');

  const xmlContent = xml.getXml();
  const endpointUrl = 'https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview';

  const resp = new HttpResponse();
  try {
    await http.httpStrAsync('POST', endpointUrl, xmlContent, 'utf-8', 'application/xml', resp);
  } catch {
    console.log(http.lastErrorText);
    return;
  }

  // A 200 status code indicates success.
  const statusCode = resp.statusCode;
  console.log(`statusCode = ${statusCode}`);

  // Use the following online tool to generate parsing code from sample XML: 
  // Generate Parsing Code from XML

  // A sample XML response is shown below...

  xml.loadXml(resp.bodyStr);

  const tagPath = '';
  let i = 0;
  let code = 0;
  let description = '';
  let vType = '';

  const orderType = xml.getChildContent('orderType');
  const totalOrderValue = xml.getChildContent('totalOrderValue');
  const orderTerm = xml.getChildContent('Order|orderTerm');
  const priceType = xml.getChildContent('Order|priceType');
  const limitPrice = xml.getChildContent('Order|limitPrice');
  const stopPrice = xml.getChildIntValue('Order|stopPrice');
  const marketSession = xml.getChildContent('Order|marketSession');
  const allOrNone = xml.getChildContent('Order|allOrNone');
  const symbolArg = xml.getChildContent('Order|Instrument|Product|symbol');
  const securityType = xml.getChildContent('Order|Instrument|Product|securityType');
  const symbolDescription = xml.getChildContent('Order|Instrument|symbolDescription');
  const orderAction = xml.getChildContent('Order|Instrument|orderAction');
  const quantityType = xml.getChildContent('Order|Instrument|quantityType');
  const quantity = xml.getChildIntValue('Order|Instrument|quantity');
  const cancelQuantity = xml.getChildContent('Order|Instrument|cancelQuantity');
  const reserveOrder = xml.getChildContent('Order|Instrument|reserveOrder');
  const reserveQuantity = xml.getChildContent('Order|Instrument|reserveQuantity');
  i = 0;
  const countI = xml.numChildrenHavingTag('Order|messages|Message');
  while (i < countI) {
    xml.i = i;
    code = xml.getChildIntValue('Order|messages|Message[i]|code');
    description = xml.getChildContent('Order|messages|Message[i]|description');
    vType = xml.getChildContent('Order|messages|Message[i]|type');
    i++;
  }

  const egQual = xml.getChildContent('Order|egQual');
  const estimatedCommission = xml.getChildContent('Order|estimatedCommission');
  const estimatedTotalAmount = xml.getChildContent('Order|estimatedTotalAmount');
  const netPrice = xml.getChildIntValue('Order|netPrice');
  const netBid = xml.getChildIntValue('Order|netBid');
  const netAsk = xml.getChildIntValue('Order|netAsk');
  const gcd = xml.getChildIntValue('Order|gcd');
  const previewId = xml.getChildIntValue('PreviewIds|previewId');
  const previewTime = xml.getChildContent('previewTime');
  const dstFlag = xml.getChildContent('dstFlag');
  const accountId = xml.getChildIntValue('accountId');
  const optionLevelCd = xml.getChildIntValue('optionLevelCd');
  const marginLevelCd = xml.getChildContent('marginLevelCd');
  const ahDisclosureFlag = xml.getChildContent('Disclosure|ahDisclosureFlag');
  const aoDisclosureFlag = xml.getChildContent('Disclosure|aoDisclosureFlag');
  const conditionalDisclosureFlag = xml.getChildContent('Disclosure|conditionalDisclosureFlag');
  const ehDisclosureFlag = xml.getChildContent('Disclosure|ehDisclosureFlag');
  const marginBuyingPower = xml.getChildContent('marginBuyingPower');

  // Sample XML Response

  // <?xml version="1.0" encoding="UTF-8"?>
  // <PreviewOrderResponse>
  //    <orderType>EQ</orderType>
  //    <totalOrderValue>1892.05</totalOrderValue>
  //    <Order>
  //       <orderTerm>GOOD_FOR_DAY</orderTerm>
  //       <priceType>LIMIT</priceType>
  //       <limitPrice>188.51</limitPrice>
  //       <stopPrice>0</stopPrice>
  //       <marketSession>REGULAR</marketSession>
  //       <allOrNone>false</allOrNone>
  //       <Instrument>
  //          <Product>
  //             <symbol>FB</symbol>
  //             <securityType>EQ</securityType>
  //          </Product>
  //          <symbolDescription>FACEBOOK INC CL A</symbolDescription>
  //          <orderAction>BUY</orderAction>
  //          <quantityType>QUANTITY</quantityType>
  //          <quantity>10</quantity>
  //          <cancelQuantity>0.0</cancelQuantity>
  //          <reserveOrder>true</reserveOrder>
  //          <reserveQuantity>0.0</reserveQuantity>
  //       </Instrument>
  //       <messages>
  //          <Message>
  //             <code>1042</code>
  //             <description>200|You have an existing open order for this security on the same side of the market. If you did not intend to place a second order for this security, please modify your order now.</description>
  //             <type>WARNING</type>
  //          </Message>
  //          <Message>
  //             <code>3093</code>
  //             <description>Position Concentrated.</description>
  //             <type>WARNING</type>
  //          </Message>
  //       </messages>
  //       <egQual>EG_QUAL_NOT_A_MARKET_ORDER</egQual>
  //       <estimatedCommission>6.95</estimatedCommission>
  //       <estimatedTotalAmount>1892.05</estimatedTotalAmount>
  //       <netPrice>0</netPrice>
  //       <netBid>0</netBid>
  //       <netAsk>0</netAsk>
  //       <gcd>0</gcd>
  //       <ratio />
  //    </Order>
  //    <PreviewIds>
  //       <previewId>1020563279</previewId>
  //    </PreviewIds>
  //    <previewTime>1529018458516</previewTime>
  //    <dstFlag>true</dstFlag>
  //    <accountId>84246841</accountId>
  //    <optionLevelCd>4</optionLevelCd>
  //    <marginLevelCd>MARGIN_TRADING_ALLOWED</marginLevelCd>
  //    <Disclosure>
  //       <ahDisclosureFlag>false</ahDisclosureFlag>
  //       <aoDisclosureFlag>false</aoDisclosureFlag>
  //       <conditionalDisclosureFlag>true</conditionalDisclosureFlag>
  //       <ehDisclosureFlag>false</ehDisclosureFlag>
  //    </Disclosure>
  //    <marginBuyingPower>86758.05</marginBuyingPower>
  // </PreviewOrderResponse>
}