Sample code for 30+ languages & platforms
Tcl

Xero Update Account

Demonstrates how to update an account in Xero.

Note: Requires Chilkat v9.5.0.64 or greater.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# Note: Requires Chilkat v9.5.0.64 or greater.

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

set rest [new_CkRest]

# Before sending REST API calls, the REST object needs to be
# initialized for OAuth1.
# See Xero 2-Legged OAuth1 Setup for sample code.

# Assuming the REST object's OAuth1 authenticator is setup, and the initial
# connection was made, we may now send REST HTTP requests..

# --------------------------------------------------------------
# The Account to be updated already contains this data:

#     <Account>
#       <AccountID>afe53f21-1221-451c-a8c4-08457e129d84</AccountID>
#       <Code>160</Code>
#       <Name>Computer Equipment</Name>
#       <Status>ACTIVE</Status>
#       <Type>FIXED</Type>
#       <TaxType>TAX002</TaxType>
#       <Description>Computer equipment that is owned and controlled by the business</Description>
#       <Class>ASSET</Class>
#       <EnablePaymentsToAccount>false</EnablePaymentsToAccount>
#       <ShowInExpenseClaims>true</ShowInExpenseClaims>
#       <ReportingCode>ASS</ReportingCode>
#       <ReportingCodeName>Assets</ReportingCodeName>
#       <HasAttachments>false</HasAttachments>
#       <UpdatedDateUTC>2016-10-15T22:22:44.53</UpdatedDateUTC>
#     </Account>

# --------------------------------------------------------------
# Build the XML to update the description

set xml [new_CkXml]

CkXml_put_Tag $xml "Account"
CkXml_NewChild2 $xml "AccountID" "afe53f21-1221-451c-a8c4-08457e129d84"
CkXml_NewChild2 $xml "Description" "Computer equipment owned by the business."

CkXml_put_EmitCompact $xml 1

# Do not emit the XML declarator. Xero does not accept the XML if it
# has the initial line: <?xml version="1.0" encoding="utf-8"?>
CkXml_put_EmitXmlDecl $xml 0

CkRest_AddQueryParam $rest "xml" [CkXml_getXml $xml]

# Use a POST to update (a PUT is to create)
set responseXml [CkRest_fullRequestFormUrlEncoded $rest "POST" "/api.xro/2.0/Accounts"]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkXml $xml
    exit
}

# A 200 response is expected for actual success.
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "$responseXml"
    delete_CkRest $rest
    delete_CkXml $xml
    exit
}

# Examine the XML response
puts "$responseXml"

# A successful XML response is as follows:

# <Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
#   <Id>8efc8fb9-1f78-438c-a2d3-46954bb82183</Id>
#   <Status>OK</Status>
#   <ProviderName>ChilkatPrivate</ProviderName>
#   <DateTimeUTC>2016-11-11T02:24:01.1692715Z</DateTimeUTC>
#   <Accounts>
#     <Account>
#       <AccountID>afe53f21-1221-451c-a8c4-08457e129d84</AccountID>
#       <Code>160</Code>
#       <Name>Computer Equipment</Name>
#       <Status>ACTIVE</Status>
#       <Type>FIXED</Type>
#       <TaxType>TAX002</TaxType>
#       <Description>Computer equipment owned by the business.</Description>
#       <Class>ASSET</Class>
#       <EnablePaymentsToAccount>false</EnablePaymentsToAccount>
#       <ShowInExpenseClaims>false</ShowInExpenseClaims>
#       <ReportingCode>ASS</ReportingCode>
#       <ReportingCodeName>Assets</ReportingCodeName>
#       <UpdatedDateUTC>2016-11-11T02:24:01.3</UpdatedDateUTC>
#     </Account>
#   </Accounts>
# </Response>

delete_CkRest $rest
delete_CkXml $xml