How shashankd06/idempotent-payment-ledger-api works
This is a FastAPI payment-ledger API. Clients create accounts, query balances derived from ledger entries, and submit transfers; transfer requests are checked for idempotent replay before ledger execution. The ledger locks accounts, checks funds, and records balanced debit/credit entries. The README documents these capabilities, while the sampled source supports the specific route, ledger, and storage relationships shown here.
Main entry points: database.py SQL database · routes.py API routes · ledger.py Transfer execution · main.py FastAPI app
Components 12
API surface
- FastAPI app
app/main.py - API routes
app/routes.py - Request and response schemas
app/schemas.py - Account creation
app/routes.py - Balance query
app/routes.py - Transfer endpoint
app/routes.py
Ledger operations
- Idempotency checks
app/idempotency.py - Transfer execution
app/ledger.py - Balance derivation
app/ledger.py
Persistence
- Ledger data models
app/models.py - SQL database
app/database.py
Other components
- API client
Connections 20
- API client → FastAPI app: sends requests
- FastAPI app → API routes: registers routes
- FastAPI app → SQL database: creates tables
- API routes → Account creation: dispatches
- API routes → Balance query: dispatches
- API routes → Transfer endpoint: dispatches
- Account creation → Request and response schemas: validates and returns
- Balance query → Request and response schemas: returns
- Transfer endpoint → Request and response schemas: validates and returns
- Account creation → SQL database: queries and writes
- Account creation → Transfer execution: funds opening balance
- Balance query → SQL database: loads account
- Balance query → Balance derivation: requests balance
- Transfer endpoint → Idempotency checks: checks and stores result
- Transfer endpoint → Transfer execution: executes transfer
- Idempotency checks → SQL database: reads and writes records
- Transfer execution → Balance derivation: derives balances
- Transfer execution → SQL database: locks and writes entries
- Balance derivation → SQL database: sums entries
- SQL database → Ledger data models: maps tables