Sample code for 30+ languages & platforms
Tcl

QuickBooks - Create an Account

See more QuickBooks Examples

Demonstrates how to send an JSON request to create a QuickBooks account.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

# First get our previously obtained OAuth2 access token.
set jsonToken [new_CkJsonObject]

set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/qb-access-token.json"]

set rest [new_CkRest]

set bAutoReconnect 1
set success [CkRest_Connect $rest "sandbox-quickbooks.api.intuit.com" 443 1 $bAutoReconnect]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkJsonObject $jsonToken
    delete_CkRest $rest
    exit
}

set sbAuth [new_CkStringBuilder]

CkStringBuilder_Append $sbAuth "Bearer "
CkStringBuilder_Append $sbAuth [CkJsonObject_stringOf $jsonToken "access_token"]
CkRest_put_Authorization $rest [CkStringBuilder_getAsString $sbAuth]

set jsonRequest [new_CkJsonObject]

CkJsonObject_AppendString $jsonRequest "AccountType" "Credit Card"
CkJsonObject_AppendString $jsonRequest "Name" "Banana Republic"
set requestBody [CkJsonObject_emit $jsonRequest]

# "123146096291789" is the company ID.
set sbPath [new_CkStringBuilder]

CkStringBuilder_Append $sbPath "/v3/company/123146096291789/account?minorversion=45"

CkRest_AddHeader $rest "Content-Type" "application/json"
CkRest_AddHeader $rest "Accept" "application/json"
CkRest_put_AllowHeaderFolding $rest 0

set responseBody [CkRest_fullRequestString $rest "POST" [CkStringBuilder_getAsString $sbPath] $requestBody]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkJsonObject $jsonToken
    delete_CkRest $rest
    delete_CkStringBuilder $sbAuth
    delete_CkJsonObject $jsonRequest
    delete_CkStringBuilder $sbPath
    exit
}

# We should expect a 200 response if successful.
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "Request Header: "
    puts [CkRest_lastRequestHeader $rest]
    puts "----"
    puts "Response StatusCode = [CkRest_get_ResponseStatusCode $rest]"
    puts "Response StatusLine: [CkRest_responseStatusText $rest]"
    puts "Response Header:"
    puts [CkRest_responseHeader $rest]
    puts "$responseBody"
    delete_CkJsonObject $jsonToken
    delete_CkRest $rest
    delete_CkStringBuilder $sbAuth
    delete_CkJsonObject $jsonRequest
    delete_CkStringBuilder $sbPath
    exit
}

set jsonResponse [new_CkJsonObject]

CkJsonObject_Load $jsonResponse $responseBody
CkJsonObject_put_EmitCompact $jsonResponse 0
puts [CkJsonObject_emit $jsonResponse]
puts "Success."

# A sample JSON response:

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

# {
#   "Account": {
#     "Name": "Banana Republic",
#     "SubAccount": false,
#     "FullyQualifiedName": "Banana Republic",
#     "Active": true,
#     "Classification": "Liability",
#     "AccountType": "Credit Card",
#     "AccountSubType": "CreditCard",
#     "CurrentBalance": 0,
#     "CurrentBalanceWithSubAccounts": 0,
#     "CurrencyRef": {
#       "value": "USD",
#       "name": "United States Dollar"
#     },
#     "domain": "QBO",
#     "sparse": false,
#     "Id": "97",
#     "SyncToken": "0",
#     "MetaData": {
#       "CreateTime": "2016-10-25T05:07:12-07:00",
#       "LastUpdatedTime": "2016-10-25T05:07:12-07:00"
#     }
#   },
#   "time": "2016-10-25T05:07:11.714-07:00"
# }

delete_CkJsonObject $jsonToken
delete_CkRest $rest
delete_CkStringBuilder $sbAuth
delete_CkJsonObject $jsonRequest
delete_CkStringBuilder $sbPath
delete_CkJsonObject $jsonResponse