API Data Provider - Online Help

Connecting to ApprovalMax

To authenticate to ApprovalMax and connect to your own data or to allow other users to connect to their data, the ApprovalMax Public API requires the OAuth 2.0 authorization code flow.

Using OAuth Authentication

First, you will need to register an OAuth application with ApprovalMax. Sign in to the ApprovalMax Developer Portal (https://developer.approvalmax.com/applications) and create a new application. Your OAuth application will be assigned a Client ID and a Client Secret, and you must register at least one Redirect URI (Callback URL).

A Premium ApprovalMax subscription (or active trial) is required to use the Public API.

After setting the following connection properties, you are ready to connect:

  • AuthScheme: Set this to OAuth.
  • InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to manage the process to obtain the OAuthAccessToken.
  • OAuthClientId: Set this to the Client ID that is shown in your application settings on the ApprovalMax Developer Portal.
  • OAuthClientSecret: Set this to the Client Secret that is shown in your application settings on the ApprovalMax Developer Portal.
  • CallbackURL: Set this to the Redirect URI that is registered in your application settings.
  • Scope: (Optional) Override the default OAuth scopes. The default value openid offline_access https://www.approvalmax.com/scopes/public_api/read grants read-only access to all tables in this profile and enables refresh tokens. Use the principle of least privilege when narrowing this scope.

The OAuth Authorization URL is https://identity.approvalmax.com/connect/authorize and the Token URL is https://identity.approvalmax.com/connect/token. Both authorization_code and refresh_token grant types are supported.

Example OAuth Connection String

Profile=C:\profiles\ApprovalMax.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=your_callback_url;

Available Tables

The ApprovalMax API Profile provides access to the following tables:

  • Companies: ApprovalMax companies (organizations) the authenticated user has access to.
  • NetSuiteBillPayments: NetSuite bill payment approval requests for the specified company.
  • NetSuiteExpenseReports: NetSuite expense report approval requests for the specified company.
  • NetSuiteInvoices: NetSuite invoice approval requests for the specified company.
  • NetSuiteItemReceipts: NetSuite item receipt approval requests for the specified company.
  • NetSuiteJournalEntries: NetSuite journal entry approval requests for the specified company.
  • NetSuitePurchaseOrders: NetSuite purchase order approval requests for the specified company.
  • NetSuiteSalesOrders: NetSuite sales order approval requests for the specified company.
  • NetSuiteVendorBills: NetSuite vendor bill approval requests for the specified company.
  • QBooksBills: QuickBooks Online bill approval requests for the specified company.
  • QBooksExpenses: QuickBooks Online expense approval requests for the specified company.
  • QBooksPurchaseOrders: QuickBooks Online purchase order approval requests for the specified company.
  • StandaloneCurrencies: Currencies available for standalone (non-integration) requests in the specified company.
  • StandaloneDocuments: Standalone (non-integration) approval requests for the specified company.
  • StandaloneWorkflows: Standalone (non-integration) approval workflows defined for the specified company.
  • UserProfiles: ApprovalMax user profiles for users participating in workflows within a given company.
  • XeroAccounts: Xero chart-of-accounts entries synced into ApprovalMax for the specified company.
  • XeroBatchPayments: Xero batch payment approval requests for the specified company.
  • XeroBills: Xero bill (accounts payable invoice) approval requests for the specified company.
  • XeroBrandingThemes: Xero branding themes synced into ApprovalMax for the specified company.
  • XeroContacts: Xero contacts (suppliers/customers) synced into ApprovalMax for the specified company.
  • XeroCreditNotes: Xero credit note approval requests for the specified company.
  • XeroCurrencies: Currencies available for Xero requests in the specified company.
  • XeroItems: Xero inventory items synced into ApprovalMax for the specified company.
  • XeroPurchaseOrders: Xero purchase order approval requests for the specified company.
  • XeroQuotes: Xero quote approval requests for the specified company.
  • XeroSalesInvoices: Xero sales invoice approval requests for the specified company.
  • XeroTaxes: Xero tax codes synced into ApprovalMax for the specified company.
  • XeroTrackingCategories: Xero tracking categories synced into ApprovalMax for the specified company.

Notes

  • The profile is read-only. ApprovalMax write operations (creating/editing/submitting/marking standalone documents and Xero requests) are not surfaced through this profile.
  • Most request tables (Bills, Purchase Orders, etc.) require a CompanyId filter or pseudo-column to be supplied because they call company-scoped endpoints. Use the Companies table first to look up the companyId you want to query.
  • Cursor-based pagination uses the continuationToken field returned in each page and is handled automatically by the driver.
  • Error responses follow RFC 7807 ProblemDetails (application/problem+json); the driver surfaces the detail field as the error message.

Usage Examples

List all companies the authenticated user has access to:

SELECT * FROM Companies

List user profiles for a specific company:

SELECT * FROM UserProfiles WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

List standalone workflows for a specific company:

SELECT * FROM StandaloneWorkflows WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query standalone documents:

SELECT * FROM StandaloneDocuments WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query standalone currencies:

SELECT * FROM StandaloneCurrencies WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero bills approved after a given date:

SELECT * FROM XeroBills WHERE CompanyId = '00000000-0000-0000-0000-000000000000' AND RequestStatus = 'Approved' AND CreatedAt >= '2024-01-01T00:00:00Z'

Query Xero purchase orders:

SELECT * FROM XeroPurchaseOrders WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero sales invoices:

SELECT * FROM XeroSalesInvoices WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero credit notes:

SELECT * FROM XeroCreditNotes WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero quotes:

SELECT * FROM XeroQuotes WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero batch payments:

SELECT * FROM XeroBatchPayments WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero contacts:

SELECT * FROM XeroContacts WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query Xero reference data (accounts, items, taxes, tracking categories, branding themes, currencies):

SELECT * FROM XeroAccounts WHERE CompanyId = '00000000-0000-0000-0000-000000000000'
SELECT * FROM XeroItems WHERE CompanyId = '00000000-0000-0000-0000-000000000000'
SELECT * FROM XeroTaxes WHERE CompanyId = '00000000-0000-0000-0000-000000000000'
SELECT * FROM XeroTrackingCategories WHERE CompanyId = '00000000-0000-0000-0000-000000000000'
SELECT * FROM XeroBrandingThemes WHERE CompanyId = '00000000-0000-0000-0000-000000000000'
SELECT * FROM XeroCurrencies WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query QuickBooks bills:

SELECT * FROM QBooksBills WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query QuickBooks expenses:

SELECT * FROM QBooksExpenses WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query QuickBooks purchase orders:

SELECT * FROM QBooksPurchaseOrders WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite vendor bills:

SELECT * FROM NetSuiteVendorBills WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite purchase orders:

SELECT * FROM NetSuitePurchaseOrders WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite sales orders:

SELECT * FROM NetSuiteSalesOrders WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite invoices:

SELECT * FROM NetSuiteInvoices WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite journal entries:

SELECT * FROM NetSuiteJournalEntries WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite expense reports:

SELECT * FROM NetSuiteExpenseReports WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite item receipts:

SELECT * FROM NetSuiteItemReceipts WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Query NetSuite bill payments:

SELECT * FROM NetSuiteBillPayments WHERE CompanyId = '00000000-0000-0000-0000-000000000000'

Connection Properties

The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider.


Property Description
AuthScheme The scheme used for authentication. Accepted entries are None or OAuth.
Allowed values are: BASIC, NONE, NTLM, OAUTH, APIKEY, OAUTH_CLIENT, OAUTH_PASSWORD
CallbackURL Identifies the URL users return to after authenticating to API via OAuth (Custom OAuth applications only).
InitiateOAuth Specifies the process for obtaining or refreshing the OAuth access token, which maintains user access while an authenticated, authorized user is working.
Allowed values are: OFF, REFRESH, GETANDREFRESH
OAuthAccessToken Specifies the OAuth access token used to authenticate requests to the data source. This token is issued by the authorization server after a successful OAuth exchange.
OAuthClientId Specifies the client ID (also known as the consumer key) assigned to your custom OAuth application. This ID is required to identify the application to the OAuth authorization server during authentication.
OAuthClientSecret Specifies the client secret assigned to your custom OAuth application. This confidential value is used to authenticate the application to the OAuth authorization server. (Custom OAuth applications only.).
OAuthExpiresIn Specifies the duration in seconds, of an OAuth Access Token's lifetime. The token can be reissued to keep access alive as long as the user keeps working.
OAuthRefreshToken Specifies the OAuth refresh token used to request a new access token after the original has expired.
OAuthSettingsLocation Specifies the location of the settings file where OAuth values are saved.
OAuthTokenTimestamp Displays a Unix epoch timestamp in milliseconds that shows how long ago the current access token was created.
OAuthVerifier Specifies a verifier code returned from the OAuthAuthorizationURL . Used when authenticating to OAuth on a headless server, where a browser can't be launched. Requires both OAuthSettingsLocation and OAuthVerifier to be set.
Scope Scope(s) to use when authenticating, that control access to specific information.

Copyright (c) 2026 CData Software, Inc. - All rights reserved.
Build 26.0.9770.0