2026-05-23 02:08:27 +02:00
# Tink API Demo
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
En simpel Python-demo der viser Tink open banking-flowet fra ende til anden — bygget som proof-of-concept til at illustrere hvordan integrationen kan se ud i praksis.
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
Formålet er ikke at erstatte en produktion C#/Umbraco -implementation, men at vise at Tink-flowet er veldokumenteret og relativt ligetil at bygge — uanset platform.
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
## Hvad demo'en viser
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
| Step | Hvad sker der | Tink endpoint |
|------|---------------|---------------|
| 1 | Hent app token (client credentials) | `POST /api/v1/oauth/token` |
| 2 | Opret kunde i Tink med ekstern reference | `POST /api/v1/user/create` |
| 3 | Åbn Tink Link — brugeren tilslutter sin bank | Tink Link v1 |
| 4 | Hent brugerens konti med balances | `GET /data/v2/accounts` |
| 5 | Hent transaktioner | `GET /data/v2/transactions` |
| 6 | Webhook-registrering til real-time notifikationer | `POST /events/v2/webhook-endpoints` |
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
Live JSON responses på hvert trin — præcis som det vil se ud i en reel integration.
## Kør det selv
Du skal bruge egne Tink sandbox-credentials fra [console.tink.com ](https://console.tink.com ).
2026-05-23 02:08:27 +02:00
```bash
cp .env.example .env
2026-05-23 02:08:27 +02:00
# Udfyld TINK_CLIENT_ID og TINK_CLIENT_SECRET
2026-05-23 02:08:27 +02:00
# Tilføj http://localhost:8000/callback som Redirect URI i Tink Console
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
2026-05-23 02:08:27 +02:00
make run
2026-05-23 02:08:27 +02:00
# Åbn http://localhost:8000
```
2026-05-23 02:08:27 +02:00
Eller med Docker:
2026-05-23 02:08:27 +02:00
```bash
2026-05-23 02:08:27 +02:00
cp .env.example .env
2026-05-23 02:08:27 +02:00
docker compose up
```
2026-05-23 02:08:27 +02:00
## Tink Console opsætning
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
1. Gå til [console.tink.com ](https://console.tink.com ) → opret en app
2. Kopiér **Client ID ** og **Client Secret ** til `.env`
3. Under **Redirect URIs ** : tilføj `http://localhost:8000/callback`
4. Under **Scopes ** : aktiver `accounts:read` , `transactions:read` , `credentials:read` , `user:create`
fix: production deployment — Docker, Nomad, Consul KV, SHA tags
- Dockerfile: multi-stage build, non-root user, src/static tracked with .gitkeep
- Nomad job: force_pull=true, Traefik router fixed to tink-demo.i80.dk,
loadbalancer.server.port=8000, job renamed from moneycapp-tink-demo
- CI/CD: git SHA image tags (deterministic deploys), removed .env.production
baking — secrets injected at runtime via Consul KV template stanza
- Session security: asyncio lock prevents duplicate code exchange on callback,
guard for already-stored token, api_log moved server-side (cookie overflow fix)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-23 02:08:27 +02:00
2026-05-23 02:08:27 +02:00
## Hvad det ikke er
fix: production deployment — Docker, Nomad, Consul KV, SHA tags
- Dockerfile: multi-stage build, non-root user, src/static tracked with .gitkeep
- Nomad job: force_pull=true, Traefik router fixed to tink-demo.i80.dk,
loadbalancer.server.port=8000, job renamed from moneycapp-tink-demo
- CI/CD: git SHA image tags (deterministic deploys), removed .env.production
baking — secrets injected at runtime via Consul KV template stanza
- Session security: asyncio lock prevents duplicate code exchange on callback,
guard for already-stored token, api_log moved server-side (cookie overflow fix)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-23 02:08:27 +02:00
2026-05-23 02:15:17 +02:00
Dette er en demo — ikke produktionskode. Der er ingen database, ingen brugerstyring og tokens lever kun i hukommelsen. En reel implementation bygger naturligvis videre på den eksisterende platform og arkitektur.
2026-05-23 02:08:27 +02:00