Sample code for 30+ languages & platforms
PureBasic

ETrade v1 List Transactions

See more HTTP Misc Examples

Get information about the transactions in an ETrade brokerage account.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkXml.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttp::setCkOAuth1(http, 1)
    CkHttp::setCkOAuthVerifier(http, "")
    CkHttp::setCkOAuthConsumerKey(http, "ETRADE_CONSUMER_KEY")
    CkHttp::setCkOAuthConsumerSecret(http, "ETRADE_CONSUMER_SECRET")

    ; Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2.
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkJsonObject::ckLoadFile(json,"qa_data/tokens/etrade.json")
    If success <> 1
        Debug "Failed to load OAuth1 token"
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        ProcedureReturn
    EndIf

    CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(json,"oauth_token"))
    CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(json,"oauth_token_secret"))

    ; See the ETrade v1 API documentation HERE.

    CkHttp::ckSetUrlVar(http,"accountIdKey","vsnhtF7d9jXxBy6HyaAC4vQ")
    respStr.s = CkHttp::ckQuickGetStr(http,"https://apisb.etrade.com/v1/accounts/{$accountIdKey}/transactions")
    If CkHttp::ckLastMethodSuccess(http) <> 1
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        ProcedureReturn
    EndIf

    ; A 200 status code indicates success.
    statusCode.i = CkHttp::ckLastStatus(http)
    Debug "statusCode = " + Str(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.i = CkXml::ckCreate()
    If xml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkXml::ckLoadXml(xml,respStr)

    i.i
    count_i.i
    tagPath.s
    transactionId.s
    accountId.i
    transactionDate.s
    postDate.s
    amount.i
    description.s
    description2.i
    transactionType.s
    imageFlag.s
    instType.s
    quantity.i
    price.i
    settlementCurrency.s
    paymentCurrency.s
    fee.i
    settlementDate.s
    detailsURI.s
    pageMarkers.s
    moreTransactions.s
    transactionCount.i
    totalCount.i

    i = 0
    count_i = CkXml::ckNumChildrenHavingTag(xml,"Transaction")
    While i < count_i
        CkXml::setCkI(xml, i)
        transactionId = CkXml::ckGetChildContent(xml,"Transaction[i]|transactionId")
        accountId = CkXml::ckGetChildIntValue(xml,"Transaction[i]|accountId")
        transactionDate = CkXml::ckGetChildContent(xml,"Transaction[i]|transactionDate")
        postDate = CkXml::ckGetChildContent(xml,"Transaction[i]|postDate")
        amount = CkXml::ckGetChildIntValue(xml,"Transaction[i]|amount")
        description = CkXml::ckGetChildContent(xml,"Transaction[i]|description")
        description2 = CkXml::ckGetChildIntValue(xml,"Transaction[i]|description2")
        transactionType = CkXml::ckGetChildContent(xml,"Transaction[i]|transactionType")
        imageFlag = CkXml::ckGetChildContent(xml,"Transaction[i]|imageFlag")
        instType = CkXml::ckGetChildContent(xml,"Transaction[i]|instType")
        quantity = CkXml::ckGetChildIntValue(xml,"Transaction[i]|brokerage|quantity")
        price = CkXml::ckGetChildIntValue(xml,"Transaction[i]|brokerage|price")
        settlementCurrency = CkXml::ckGetChildContent(xml,"Transaction[i]|brokerage|settlementCurrency")
        paymentCurrency = CkXml::ckGetChildContent(xml,"Transaction[i]|brokerage|paymentCurrency")
        fee = CkXml::ckGetChildIntValue(xml,"Transaction[i]|brokerage|fee")
        settlementDate = CkXml::ckGetChildContent(xml,"Transaction[i]|brokerage|settlementDate")
        detailsURI = CkXml::ckGetChildContent(xml,"Transaction[i]|detailsURI")
        i = i + 1
    Wend
    pageMarkers = CkXml::ckGetChildContent(xml,"pageMarkers")
    moreTransactions = CkXml::ckGetChildContent(xml,"moreTransactions")
    transactionCount = CkXml::ckGetChildIntValue(xml,"transactionCount")
    totalCount = CkXml::ckGetChildIntValue(xml,"totalCount")

    ; <?xml version="1.0" encoding="UTF-8"?>
    ; <TransactionListResponse>
    ;    <Transaction>
    ;       <transactionId>18165100001766</transactionId>
    ;       <accountId>83564979</accountId>
    ;       <transactionDate>1528948800000</transactionDate>
    ;       <postDate>1528948800000</postDate>
    ;       <amount>-2</amount>
    ;       <description>ACH WITHDRAWL REFID:109187276;</description>
    ;       <description2>109187276</description2>
    ;       <transactionType>Transfer</transactionType>
    ;       <memo />
    ;       <imageFlag>false</imageFlag>
    ;       <instType>BROKERAGE</instType>
    ;       <brokerage>
    ;          <product />
    ;          <quantity>0</quantity>
    ;          <price>0</price>
    ;          <settlementCurrency>USD</settlementCurrency>
    ;          <paymentCurrency>USD</paymentCurrency>
    ;          <fee>0</fee>
    ;          <settlementDate>1528948800000</settlementDate>
    ;       </brokerage>
    ;       <detailsURI>https://api.etrade.com/v1/accounts/yIFaUoJ81qyAhgxLWRQ42g/transactions/18165100001766</detailsURI>
    ;    </Transaction>
    ;    <Transaction>
    ;       <transactionId>18158100000983</transactionId>
    ;       <accountId>83564979</accountId>
    ;       <transactionDate>1528344000000</transactionDate>
    ;       <postDate>1528344000000</postDate>
    ;       <amount>-2</amount>
    ;       <description>ACH WITHDRAWL REFID:98655276;</description>
    ;       <description2>98655276</description2>
    ;       <transactionType>Transfer</transactionType>
    ;       <memo />
    ;       <imageFlag>false</imageFlag>
    ;       <instType>BROKERAGE</instType>
    ;       <brokerage>
    ;          <product />
    ;          <quantity>0</quantity>
    ;          <price>0</price>
    ;          <settlementCurrency>USD</settlementCurrency>
    ;          <paymentCurrency>USD</paymentCurrency>
    ;          <fee>0</fee>
    ;          <settlementDate>1528344000000</settlementDate>
    ;       </brokerage>
    ;       <detailsURI>https://api.etrade.com/v1/accounts/yIFaUoJ81qyAhgxLWRQ42g/transactions/18158100000983</detailsURI>
    ;    </Transaction>
    ;    <pageMarkers>eNpTsAlITE91zi%2FNK%2FHMc04syi8tTs2xM7TRxybMpWATkl%2BSmBOUmpxflAKWtTO10ccQg6mDmwEyEE0EqAbE8SvNTUotCk4tLE3NS061M9Ax0DEEYgOIA9BkuRQgmjxTfDKLQUYoQAV8E4uyU4vsDC0MzUwNDYDA0NzMrKamBmIKVJYLphpiKsyTUB7IbH1kwwFa7F0D</pageMarkers>
    ;    <moreTransactions>false</moreTransactions>
    ;    <transactionCount>5</transactionCount>
    ;    <totalCount>5</totalCount>
    ; </TransactionListResponse


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkXml::ckDispose(xml)


    ProcedureReturn
EndProcedure