Sample code for 30+ languages & platforms
SQL Server

Xero Get a Filtered Set of Resources (Get all SALES Accounts)

Demonstrates how to add the "where" parameter to get a filtered set of resources. See Get Filtered Resources.

This example gets the accounts where the Type = "SALES".

Note: Requires Chilkat v9.5.0.64 or greater.

Chilkat SQL Server Downloads

SQL Server
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @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.

    DECLARE @rest int
    EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  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..

    --  ------------------------------------------------------------
    --  Add the "where" parameter.
    EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'where', 'Type=="SALES"'

    --  Get the full list of accounts.
    DECLARE @sbXml int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbXml OUT

    EXEC sp_OAMethod @rest, 'FullRequestNoBodySb', @success OUT, 'GET', '/api.xro/2.0/Accounts', @sbXml
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @sbXml
        RETURN
      END

    --  A 200 response is expected for actual success.
    EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
    IF @iTmp0 <> 200
      BEGIN
        EXEC sp_OAMethod @sbXml, 'GetAsString', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @sbXml
        RETURN
      END

    --  Iterate over the accounts and get some information..

    DECLARE @bAutoTrim int
    SELECT @bAutoTrim = 0
    DECLARE @xml int
    EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT

    EXEC sp_OAMethod @xml, 'LoadSb', @success OUT, @sbXml, @bAutoTrim

    --  How many accounts exist?
    DECLARE @numAccounts int
    EXEC sp_OAMethod @xml, 'NumChildrenAt', @numAccounts OUT, 'Accounts'

    PRINT 'numAccounts = ' + @numAccounts

    DECLARE @i int
    SELECT @i = 0
    WHILE @i < @numAccounts
      BEGIN
        EXEC sp_OASetProperty @xml, 'I', @i

        EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'Accounts|Account[i]|AccountID'
        PRINT 'AccountID: ' + @sTmp0

        EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'Accounts|Account[i]|Name'
        PRINT 'Name: ' + @sTmp0

        EXEC sp_OAMethod @xml, 'GetChildIntValue', @iTmp0 OUT, 'Accounts|Account[i]|Code'
        PRINT 'Code: ' + @iTmp0

        EXEC sp_OAMethod @xml, 'GetChildBoolValue', @iTmp0 OUT, 'Accounts|Account[i]|EnablePaymentsToAccount'
        PRINT 'EnablePaymentsToAccount: ' + @iTmp0

        PRINT '----'
        SELECT @i = @i + 1
      END

    EXEC @hr = sp_OADestroy @rest
    EXEC @hr = sp_OADestroy @sbXml
    EXEC @hr = sp_OADestroy @xml


END
GO