Skip to content

Repository files navigation

tap-airwallex

A Singer tap that extracts data from the Airwallex API. It is built with hotglue-singer-sdk and speaks the standard Singer message protocol on stdout, so you can pair it with any compatible target.

Features

  • Authenticates with Airwallex using API key and client ID (token obtained via the login endpoint).
  • Supports production and sandbox base URLs.
  • Incremental sync on financial_transactions using created_at and the from_created_at query parameter.

Streams

Stream Endpoint Primary key Replication key
accounts GET / (from config account_ids) id
account_details GET /account id
financial_transactions GET /financial_transactions id created_at
bills GET /spend/bills id created_at
transfers GET /transfers id
expenses GET /spend/expenses id created_at
issuing_transactions GET /issuing/transactions transaction_id
direct_debits GET /direct_debits transaction_id created_at
deposits GET /deposits id created_at
conversions GET /fx/conversions conversion_id created_at

Pagination uses page_size / page_num when the API returns has_more (except transfers, which uses cursor-based page_after).

Requirements

  • Python 3.7.13.10 (see pyproject.toml).

Installation

From a clone of this repository:

pip install poetry
poetry install

The tap-airwallex console script is available via:

poetry run tap-airwallex --help

Configuration

Setting Type Required Default Description
api_key string yes Airwallex API key (x-api-key for login).
client_id string yes Airwallex client ID (x-client-id for login).
is_sandbox boolean no false If true, uses the demo API host (api-demo.airwallex.com).

When you pass --config with a file path, a successful login may update that file with access_token and related fields for reuse on the next run.

Example config.json

{
  "api_key": "YOUR_API_KEY",
  "client_id": "YOUR_CLIENT_ID",
  "is_sandbox": false
}

Do not commit real credentials. Prefer environment variables or a secrets manager in production.

Environment-based config

You can load settings from the process environment using --config=ENV (the Singer SDK merges env into config). Run tap-airwallex --about for the authoritative setting names and types for your installed version.

Usage

Discover stream catalog:

tap-airwallex --config config.json --discover > catalog.json

Run a sync (with optional state):

tap-airwallex --config config.json --catalog catalog.json --state state.json

Pipe to any Singer target:

tap-airwallex --config config.json --catalog catalog.json | target-jsonl

Inspect built-in settings and stream metadata:

tap-airwallex --about

API hosts

Mode Base URL
Production https://api.airwallex.com/api/v1
Sandbox https://api-demo.airwallex.com/api/v1

Official API documentation: Airwallex Docs.

Development

poetry install
poetry run pytest
poetry run tap-airwallex --help

License

Apache 2.0 — see pyproject.toml.

About

Tap Airwallex

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages