Sources with a `simplefin` block in their config can pull transactions straight from the bridge instead of taking a CSV upload. Only the fetch differs — dedupe, logging, and transformation reuse the import path. The access URL is the whole credential, so it lives in .env rather than the database that manage.py offers to reset. Claiming a setup token is exposed as an endpoint because the token is single-use and easy to burn. The bridge answers 200 with a populated `errors` array when a bank is failing, which would otherwise read as a successful empty pull — those errors ride along in the sync response and show on the Import page. Pending transactions are skipped by default: they get a new id once they post, which would import the same charge twice under two keys. Sources should use ['id'] as constraint_fields — the transaction id makes overlapping pulls free while keeping genuinely repeated charges distinct. Verified against a stubbed bridge response, not a live account. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G2HFeU5neCKagTnmA6o9Tu
18 lines
545 B
Plaintext
18 lines
545 B
Plaintext
# Database Configuration
|
|
DB_HOST=localhost
|
|
DB_PORT=5432
|
|
DB_NAME=dataflow
|
|
DB_USER=postgres
|
|
DB_PASSWORD=your_password_here
|
|
|
|
# API Configuration
|
|
API_PORT=3000
|
|
NODE_ENV=development
|
|
|
|
# SimpleFIN (optional — only needed for API-based bank feeds)
|
|
# The access URL is the credential: claim a setup token once via
|
|
# POST /api/sources/simplefin-claim and paste the result here.
|
|
# A source picks its bridge with config.simplefin.access_url_env;
|
|
# SIMPLEFIN_ACCESS_URL is the default.
|
|
SIMPLEFIN_ACCESS_URL=https://user:pass@bridge.simplefin.org/simplefin
|