# payments-api Kong routing/policy layer for the **payments** slice of `classic-models-api` (see `/Users/stephanetailland/git/classic-models-api`), split out per the DDD decomposition in `../kong-konnect-deployment-strategy.md`. The backend itself stays a single monolith — only Kong does the domain split. Structure mirrors `../customers-api`, not `../catalog-api` — see `../STATUS.md` section 18 for why (`catalog-api`'s two-route MCP pattern has a latent bug; `customers-api`'s single-route pattern is the corrected one to copy going forward). **REST only, no MCP layer.** 6 routes over `Payment`, which uses a **composite key** (`customernumber` + `checknumber`, not a single id like `Customer`/`Product`) — both URI segments are captured and passed through to the backend's own composite-key URL pattern. | Route | Method | Backend path | |---|---|---| | `/payments/v1/payments/` | GET, POST | `/classic-models/api/v1/payments/` | | `/payments/v1/payments/{customernumber}/{checknumber}/` | GET, PUT, PATCH, DELETE | `/classic-models/api/v1/payments/{customernumber}/{checknumber}/` | ## Auth `openid-connect`, `audience_required`/token-exchange target = `classic-models-api` (`BACKEND_AUDIENCE`) — same second-hop-exchange pattern as `customers-api`'s REST layer: a caller gets a `payments-api`-audience token from `kong-token-exchange-broker` directly (no MCP hop exists for this domain), and this layer exchanges it again to `classic-models-api` before the backend ever sees it. IdP is the local Keycloak (`https://keycloak.sttlab.local/realms/classic-models`) — see `../STATUS.md` sections 15/16. **No `payments-api` Keycloak client or `payments-api-audience` client scope exists yet** — unlike `customers-api`, this hasn't been created on the local Keycloak (nor attached to `kong-token-exchange-broker`'s default scopes) as of this repo's initial build. Nothing can actually authenticate against these routes until that's done — same missing piece as `customers-api` had before its own Keycloak wiring step. ## Other policies Per-consumer rate limiting, response caching (GET/HEAD), audit log (`http-log`, endpoint still a placeholder — no real log collector in this lab, same caveat as the other domains). ## Structure Same `dev/` + `kong/rest/` layout as `customers-api`. Deploy key (`kong-v2/payments-api/git-deploy-key`) is a **copy of `catalog-api`'s**, not a freshly generated one — per the user's explicit instruction this session ("no reason a working key for catalog-api wouldn't work for customers-api"), the same reused key is used here too rather than minting yet another one per domain.