Sample code for 30+ languages & platforms
PureBasic

ETrade List Accounts

See more ETrade Examples

Returns a list of E*TRADE accounts for the current user.

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

    ; This 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 Authorization
    jsonToken.i = CkJsonObject::ckCreate()
    If jsonToken.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

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

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

    sandboxUrl.s = "https://apisb.etrade.com/v1/accounts/list"
    liveUrl.s = "https://api.etrade.com/v1/accounts/list"

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

    success = CkHttp::ckHttpNoBody(http,"GET",sandboxUrl,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Make sure a successful response was received.
    If CkHttpResponse::ckStatusCode(resp) >= 300
        Debug CkHttpResponse::ckStatusLine(resp)
        Debug CkHttpResponse::ckHeader(resp)
        Debug CkHttpResponse::ckBodyStr(resp)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    If CkHttpResponse::ckStatusCode(resp) = 204
        Debug "No records available."
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Sample XML response:

    ; Use this online tool to generate parsing code from sample XML: 
    ; Generate Parsing Code from XML

    ; <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    ; <AccountListResponse>
    ;     <Accounts>
    ;         <Account>
    ;             <accountId>82314598</accountId>
    ;             <accountIdKey>dBZOKt9xDrtRSAOl4MSiiA</accountIdKey>
    ;             <accountMode>IRA</accountMode>
    ;             <accountDesc>Brokerage</accountDesc>
    ;             <accountName>NickName-1</accountName>
    ;             <accountType>MARGIN</accountType>
    ;             <institutionType>BROKERAGE</institutionType>
    ;             <accountStatus>ACTIVE</accountStatus>
    ;             <closedDate>0</closedDate>
    ;         </Account>
    ;         <Account>
    ;             <accountId>58315636</accountId>
    ;             <accountIdKey>vQMsebA1H5WltUfDkJP48g</accountIdKey>
    ;             <accountMode>BROKERAGE</accountMode>
    ;             <accountDesc>Complete Savings</accountDesc>
    ;             <accountName>NickName-2</accountName>
    ;             <accountType>INDIVIDUAL</accountType>
    ;             <institutionType>BROKERAGE</institutionType>
    ;             <accountStatus>ACTIVE</accountStatus>
    ;             <closedDate>0</closedDate>
    ;         </Account>
    ;         <Account>
    ;             <accountId>70700418</accountId>
    ;             <accountIdKey>6_Dpy0rmuQ9cu9IbTfvF2A</accountIdKey>
    ;             <accountMode>CASH</accountMode>
    ;             <accountDesc>INDIVIDUAL</accountDesc>
    ;             <accountName>NickName-3</accountName>
    ;             <accountType>INDIVIDUAL</accountType>
    ;             <institutionType>BROKERAGE</institutionType>
    ;             <accountStatus>ACTIVE</accountStatus>
    ;             <closedDate>0</closedDate>
    ;         </Account>
    ;         <Account>
    ;             <accountId>83515143</accountId>
    ;             <accountIdKey>xj1Dc18FTqWPqkEEVUr5rw</accountIdKey>
    ;             <accountMode>CASH</accountMode>
    ;             <accountDesc>INDIVIDUAL</accountDesc>
    ;             <accountName/>
    ;             <accountType>CASH</accountType>
    ;             <institutionType>BROKERAGE</institutionType>
    ;             <accountStatus>CLOSED</accountStatus>
    ;             <closedDate>1521027780</closedDate>
    ; 
    ;         </Account>
    ;     </Accounts>
    ; </AccountListResponse>

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

    CkXml::ckLoadXml(xml,CkHttpResponse::ckBodyStr(resp))
    Debug CkXml::ckGetXml(xml)

    accountId.i
    accountIdKey.s
    accountMode.s
    accountDesc.s
    accountName.s
    accountType.s
    institutionType.s
    accountStatus.s
    closedDate.i

    i.i = 0
    count_i.i = CkXml::ckNumChildrenHavingTag(xml,"Accounts|Account")
    While i < count_i
        CkXml::setCkI(xml, i)
        accountId = CkXml::ckGetChildIntValue(xml,"Accounts|Account[i]|accountId")
        accountIdKey = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|accountIdKey")
        accountMode = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|accountMode")
        accountDesc = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|accountDesc")
        accountName = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|accountName")
        accountType = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|accountType")
        institutionType = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|institutionType")
        accountStatus = CkXml::ckGetChildContent(xml,"Accounts|Account[i]|accountStatus")
        closedDate = CkXml::ckGetChildIntValue(xml,"Accounts|Account[i]|closedDate")
        i = i + 1
    Wend

    Debug "Success."


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(jsonToken)
    CkHttpResponse::ckDispose(resp)
    CkXml::ckDispose(xml)


    ProcedureReturn
EndProcedure