Sample code for 30+ languages & platforms
DataFlex

QuickBooks - Query Employees

See more QuickBooks Examples

Demonstrates how to query the QuickBooks employee data.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoJsonToken
    Handle hoRest
    Boolean iBAutoReconnect
    Handle hoSbAuth
    String sQuery
    String sResponseBody
    Handle hoJson
    Handle hoDtime
    Boolean iBLocalTime
    Variant vDt
    Handle hoDt
    Integer iNumRecords
    Integer i
    Handle hoSTab
    String sYear
    String sMonth
    String sDay
    String sTemp1
    Integer iTemp1
    Integer iTemp2
    Integer iTemp3
    Integer iTemp4
    Integer iTemp5
    Boolean bTemp1

    Move False To iSuccess

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

    // Get our previously obtained OAuth2 access token, which should contain JSON like this:
    // {
    //   "expires_in": 3600,
    //   "x_refresh_token_expires_in": 8726400,
    //   "refresh_token": "L011546037639r ... 3vR2DrbOmg0Sdagw",
    //   "access_token": "eyJlbmMiOiJBMTI4Q0 ... oETJEMbeggg",
    //   "token_type": "bearer"
    // }

    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
    If (Not(IsComObjectCreated(hoJsonToken))) Begin
        Send CreateComObject of hoJsonToken
    End
    Get ComLoadFile Of hoJsonToken "qa_data/tokens/qb-access-token.json" To iSuccess

    Get Create (RefClass(cComChilkatRest)) To hoRest
    If (Not(IsComObjectCreated(hoRest))) Begin
        Send CreateComObject of hoRest
    End

    // Connect using TLS.
    // A single REST object, once connected, can be used for many Quickbooks REST API calls.
    // The auto-reconnect indicates that if the already-established HTTPS connection is closed,
    // then it will be automatically re-established as needed.
    Move True To iBAutoReconnect
    Get ComConnect Of hoRest "sandbox-quickbooks.api.intuit.com" 443 True iBAutoReconnect To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbAuth
    If (Not(IsComObjectCreated(hoSbAuth))) Begin
        Send CreateComObject of hoSbAuth
    End
    Get ComAppend Of hoSbAuth "Bearer " To iSuccess
    Get ComStringOf Of hoJsonToken "access_token" To sTemp1
    Get ComAppend Of hoSbAuth sTemp1 To iSuccess
    Get ComGetAsString Of hoSbAuth To sTemp1
    Set ComAuthorization Of hoRest To sTemp1

    Get ComAddHeader Of hoRest "Accept" "application/json" To iSuccess
    Set ComAllowHeaderFolding Of hoRest To False

    Move "select * from Employee" To sQuery
    Get ComAddQueryParam Of hoRest "query" sQuery To iSuccess
    Get ComAddQueryParam Of hoRest "minorversion" "45" To iSuccess

    // The company ID is 123146096291789
    Get ComFullRequestNoBody Of hoRest "GET" "/v3/company/123146096291789/query" To sResponseBody
    Get ComLastMethodSuccess Of hoRest To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // We should expect a 200 response if successful.
    Get ComResponseStatusCode Of hoRest To iTemp1
    If (iTemp1 <> 200) Begin
        Showln "Request Header: "
        Get ComLastRequestHeader Of hoRest To sTemp1
        Showln sTemp1
        Showln "----"
        Get ComResponseStatusCode Of hoRest To iTemp1
        Showln "Response StatusCode = " iTemp1
        Get ComResponseStatusText Of hoRest To sTemp1
        Showln "Response StatusLine: " sTemp1
        Showln "Response Header:"
        Get ComResponseHeader Of hoRest To sTemp1
        Showln sTemp1
        Showln sResponseBody
        Procedure_Return
    End

    // Load the JSON response into a JSON object for parsing.
    // A sample JSON response is shown below.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComLoad Of hoJson sResponseBody To iSuccess

    // Show the full JSON response.
    Set ComEmitCompact Of hoJson To False
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    // Use this online tool to generate parsing code from sample JSON: 
    // Generate Parsing Code from JSON

    // These will be used for parsing date/time strings..
    Get Create (RefClass(cComCkDateTime)) To hoDtime
    If (Not(IsComObjectCreated(hoDtime))) Begin
        Send CreateComObject of hoDtime
    End
    Move True To iBLocalTime
    Get Create (RefClass(cComChilkatDtObj)) To hoDt
    If (Not(IsComObjectCreated(hoDt))) Begin
        Send CreateComObject of hoDt
    End

    // Iterate over each account returned.
    Get ComSizeOfArray Of hoJson "QueryResponse.Employee" To iNumRecords
    Move 0 To i
    While (i < iNumRecords)

        Set ComI Of hoJson To i
        Get ComStringOf Of hoJson "QueryResponse.Employee[i].DisplayName" To sTemp1
        Showln "DisplayName: " sTemp1
        Get ComStringOf Of hoJson "QueryResponse.Employee[i].Id" To sTemp1
        Showln "Id: " sTemp1
        Get ComBoolOf Of hoJson "QueryResponse.Employee[i].Active" To bTemp1
        Showln "Active: " bTemp1

        // Load the CreateTime into a CkDateTime...
        Get ComStringOf Of hoJson "QueryResponse.Employee[i].MetaData.CreateTime" To sTemp1
        Get ComSetFromTimestamp Of hoDtime sTemp1 To iSuccess
        Get pvComObject of hoDt to vDt
        Send ComToDtObj To hoDtime iBLocalTime vDt

        Get ComMonth Of hoDt To iTemp1
        Get ComDay Of hoDt To iTemp2
        Get ComYear Of hoDt To iTemp3
        Get ComHour Of hoDt To iTemp4
        Get ComMinute Of hoDt To iTemp5
        Showln iTemp1 "/" iTemp2 "/" iTemp3 "  " iTemp4 ":" iTemp5

        // The the birth year, month, and day, if it exists.
        // The BirthDate contains something like this: "1985-09-11"
        Get ComHasMember Of hoJson "QueryResponse.Employee[i].BirthDate" To bTemp1
        If (bTemp1 = True) Begin
            Get Create (RefClass(cComChilkatStringTable)) To hoSTab
            If (Not(IsComObjectCreated(hoSTab))) Begin
                Send CreateComObject of hoSTab
            End
            Get ComStringOf Of hoJson "QueryResponse.Employee[i].BirthDate" To sTemp1
            Get ComSplitAndAppend Of hoSTab sTemp1 "-" True True To iSuccess
            Get ComStringAt Of hoSTab 0 To sYear
            Get ComStringAt Of hoSTab 1 To sMonth
            Get ComStringAt Of hoSTab 2 To sDay
            Showln "BirthDate: " sMonth "/" sDay "/" sYear
        End

        Showln "----"
        Move (i + 1) To i
    Loop

    Showln "Success."

    // ------------------------------------------------------
    // The JSON response looks like this:

    // {
    //   "QueryResponse": {
    //     "Employee": [
    //       {
    //         "BillableTime": false,
    //         "domain": "QBO",
    //         "sparse": false,
    //         "Id": "55",
    //         "SyncToken": "0",
    //         "MetaData": {
    //           "CreateTime": "2016-09-15T11:21:48-07:00",
    //           "LastUpdatedTime": "2016-09-15T11:21:48-07:00"
    //         },
    //         "GivenName": "Emily",
    //         "FamilyName": "Platt",
    //         "DisplayName": "Emily Platt",
    //         "PrintOnCheckName": "Emily Platt",
    //         "Active": true
    //       },
    //       {
    //         "BillableTime": false,
    //         "BirthDate": "1985-09-11",
    //         "HiredDate": "2016-08-17",
    //         "domain": "QBO",
    //         "sparse": false,
    //         "Id": "54",
    //         "SyncToken": "1",
    //         "MetaData": {
    //           "CreateTime": "2016-09-15T11:21:28-07:00",
    //           "LastUpdatedTime": "2016-09-15T11:46:26-07:00"
    //         },
    //         "GivenName": "John",
    //         "FamilyName": "Johnson",
    //         "DisplayName": "John Johnson",
    //         "PrintOnCheckName": "John Johnson",
    //         "Active": true,
    //         "PrimaryPhone": {
    //           "FreeFormNumber": "(540) 555-9645"
    //         }
    //       },
    //       {
    //         "SSN": "XXX-XX-XXXX",
    //         "PrimaryAddr": {
    //           "Id": "98",
    //           "Line1": "45 N. Elm Street",
    //           "City": "Middlefield",
    //           "CountrySubDivisionCode": "CA",
    //           "PostalCode": "93242"
    //         },
    //         "BillableTime": false,
    //         "domain": "QBO",
    //         "sparse": false,
    //         "Id": "60",
    //         "SyncToken": "0",
    //         "MetaData": {
    //           "CreateTime": "2016-10-25T14:08:18-07:00",
    //           "LastUpdatedTime": "2016-10-25T14:08:18-07:00"
    //         },
    //         "GivenName": "John",
    //         "FamilyName": "Meuller",
    //         "DisplayName": "John Meuller",
    //         "PrintOnCheckName": "John Meuller",
    //         "Active": true,
    //         "PrimaryPhone": {
    //           "FreeFormNumber": "408-525-1234"
    //         }
    //       }
    //     ],
    //     "startPosition": 1,
    //     "maxResults": 3
    //   },
    //   "time": "2016-10-25T14:18:38.487-07:00"
    // 


End_Procedure