Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

Tcl Web API Examples

Primary Categories

Facebook
GeoOp
Jira
PayPal
Peoplevox
QuickBooks

Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(Tcl) QuickBooks - Create an Employee

Demonstrates how to send an JSON request to create a QuickBooks employee

Chilkat Tcl Extension Downloads

Chilkat Tcl Extension Downloads

load ./chilkat.dll

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

# This example also assumes an OAuth1 access token was previously fetched.
# and saved in a JSON file.  See the Chilkat online examples at example-code.com
# for Quickbooks OAuth1 examples (in the Quickbooks and OAuth1 categories)
# 

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

set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/quickbooks.json"]

set oauth1 [new_CkOAuth1]

CkOAuth1_put_ConsumerKey $oauth1 "QUICKBOOKS_CONSUMER_KEY"
CkOAuth1_put_ConsumerSecret $oauth1 "QUICKBOOKS_CONSUMER_SECRET"
CkOAuth1_put_Token $oauth1 [CkJsonObject_stringOf $jsonToken "oauth_token"]
CkOAuth1_put_TokenSecret $oauth1 [CkJsonObject_stringOf $jsonToken "oauth_token_secret"]

set rest [new_CkRest]

# 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.
set bAutoReconnect 1
set success [CkRest_Connect $rest "sandbox-quickbooks.api.intuit.com" 443 1 $bAutoReconnect]
if {[expr $success != 1]} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkJsonObject $jsonToken
    delete_CkOAuth1 $oauth1
    delete_CkRest $rest
    exit
}

CkRest_SetAuthOAuth1 $rest $oauth1 0

# Create the following JSON:
# {
#   "SSN": "444-55-6666",
#   "PrimaryAddr": {
#     "Id": "50",
#     "Line1": "45 N. Elm Street",
#     "City": "Middlefield",
#     "CountrySubDivisionCode": "CA",
#     "PostalCode": "93242"
#   },
#   "GivenName": "John",
#   "FamilyName": "Meuller",
#   "PrimaryPhone": {
#     "FreeFormNumber": "408-525-1234"
#   }
# }
# 
set jsonRequest [new_CkJsonObject]

CkJsonObject_AppendString $jsonRequest "SSN" "444-55-6666"
# addr is a CkJsonObject
set addr [CkJsonObject_AppendObject $jsonRequest "PrimaryAddr"]
CkJsonObject_AppendString $addr "Id" "50"
CkJsonObject_AppendString $addr "Line1" "45 N. Elm Street"
CkJsonObject_AppendString $addr "City" "Middlefield"
CkJsonObject_AppendString $addr "CountrySubDivisionCode" "CA"
CkJsonObject_AppendString $addr "PostalCode" "93242"
delete_CkJsonObject $addr

CkJsonObject_AppendString $jsonRequest "GivenName" "John"
CkJsonObject_AppendString $jsonRequest "FamilyName" "Meuller"
# phone is a CkJsonObject
set phone [CkJsonObject_AppendObject $jsonRequest "PrimaryPhone"]
CkJsonObject_AppendString $phone "FreeFormNumber" "408-525-1234"
delete_CkJsonObject $phone

set requestBody [CkJsonObject_emit $jsonRequest]

# The company ID is the realmId
set sbPath [new_CkStringBuilder]

CkStringBuilder_Append $sbPath "/v3/company/<companyID>/employee"
set numReplacements [CkStringBuilder_Replace $sbPath "<companyID>" [CkJsonObject_stringOf $jsonToken "realmId"]]

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

# If we want a URL such as this: https://sandbox-quickbooks.api.intuit.com/v3/company/193514465596199/employee?minorversion=4
# then the query params must be added here:
CkRest_AddQueryParam $rest "minorversion" "4"

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

# We should expect a 200 response if successful.
if {[expr [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_CkOAuth1 $oauth1
    delete_CkRest $rest
    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:
# {
#   "Employee": {
#     "SSN": "XXX-XX-XXXX",
#     "PrimaryAddr": {
#       "Id": "97",
#       "Line1": "45 N. Elm Street",
#       "City": "Middlefield",
#       "CountrySubDivisionCode": "CA",
#       "PostalCode": "93242"
#     },
#     "BillableTime": false,
#     "domain": "QBO",
#     "sparse": false,
#     "Id": "59",
#     "SyncToken": "0",
#     "MetaData": {
#       "CreateTime": "2016-10-25T14:05:05-07:00",
#       "LastUpdatedTime": "2016-10-25T14:05:05-07:00"
#     },
#     "GivenName": "John",
#     "FamilyName": "Meuller",
#     "DisplayName": "John Meuller",
#     "PrintOnCheckName": "John Meuller",
#     "Active": true,
#     "PrimaryPhone": {
#       "FreeFormNumber": "408-525-1234"
#     }
#   },
#   "time": "2016-10-25T14:05:05.661-07:00"
# }
# 

delete_CkJsonObject $jsonToken
delete_CkOAuth1 $oauth1
delete_CkRest $rest
delete_CkJsonObject $jsonRequest
delete_CkStringBuilder $sbPath
delete_CkJsonObject $jsonResponse

 

© 2000-2019 Chilkat Software, Inc. All Rights Reserved.