API Auction Tender Boundary Status
Scope
This document describes the current services/api boundary for auctions and tenders.
Resolving locale, route permissions, and workspace projection.
Current scope: Guest
Category: 10_normative | Version: v1.0.0
Owner: DOCUMENT_CUSTODIAN | Review cycle: 90 days
Approval authority: GOVERNANCE_ADMIN
Documentation portal is read-only. Editing and mutation endpoints are disabled.
Kvary platform is originally created in Georgian. Where a Georgian version exists, Georgian is authoritative for platform UI, documentation, and legal interpretation.
Translations into other languages are provided for convenience. Some records may originate in other languages and carry their own source or legal locale for a specific flow, but where a Georgian version is available, the Georgian version prevails for platform-level wording and interpretation.
Metadata incomplete: Document ID, Version, Status, Owner Role, Last Review Date, Next Review Date, Change Log
This document describes the current services/api boundary for auctions and tenders.
It separates:
It does not claim that auction/tender extraction is already done.
| Public route/path | Current classification | Current behavior | Notes |
| --- | --- | --- | --- |
| GET /api/v1/auctions | canonical upstream proxy with temporary gateway-local compatibility fallback | tries upstream via auctions/gateway.ts, falls back to local list projection from auctions/engine.ts | response headers expose whether source was upstream or gateway-local |
| GET /api/v1/auctions/:id | canonical upstream proxy with temporary gateway-local compatibility fallback | same pattern as list route | local fallback still uses gateway viewer/fixture logic |
| POST /api/v1/auctions/create | temporary gateway-local compatibility path | executes registerAuctionLocalEngineRoutes against the local engine | not canonical durable backend |
| POST /api/v1/auctions/:id/announce | temporary gateway-local compatibility path | gateway-local action | not canonical durable backend |
| POST /api/v1/auctions/:id/open | temporary gateway-local compatibility path | gateway-local action | not canonical durable backend |
| POST /api/v1/auctions/:id/bids | temporary gateway-local compatibility path | gateway-local action | not canonical durable backend |
| POST /api/v1/auctions/:id/close | temporary gateway-local compatibility path | gateway-local action | not canonical durable backend |
| POST /api/v1/auctions/:id/award | temporary gateway-local compatibility path | gateway-local action | not canonical durable backend |
| POST /api/v1/auctions/:id/settle | temporary gateway-local compatibility path | gateway-local action | not canonical durable backend |
| Public route/path | Current classification | Current behavior | Notes |
| --- | --- | --- | --- |
| GET /api/v1/tenders | canonical upstream proxy with temporary gateway-local compatibility fallback | proxies upstream first through tenders/gateway.ts; on fetch failure, falls back to gateway-local legacy list projection | fallback is read-only and compatibility-only |
| GET /api/v1/tenders/:id | canonical upstream proxy with temporary gateway-local compatibility fallback | same pattern as list route | fallback uses gateway-local legacy tender projection |
| POST /api/v1/tenders/submit | canonical upstream proxy | no local-engine fallback | canonical public tender submit path |
| GET /api/v1/tenders/me | canonical upstream proxy | no local-engine fallback | auth-guarded upstream proxy |
| GET /api/v1/tenders/admin/queue | canonical upstream proxy | no local-engine fallback | auth/policy-gated upstream proxy |
| POST /api/v1/tenders/admin/:id/approve | canonical upstream proxy | no local-engine fallback | auth/policy-gated upstream proxy |
| POST /api/v1/tenders/admin/:id/reject | canonical upstream proxy | no local-engine fallback | auth/policy-gated upstream proxy |
| POST /api/v1/tenders/legacy/propose | legacy local-engine path | executes gateway-local legacy tender action | may emit legacy tender outbox event |
| POST /api/v1/tenders/legacy/:id/bids | legacy local-engine path | executes gateway-local legacy tender action | may emit legacy tender outbox event |
| POST /api/v1/tenders/legacy/:id/close | legacy local-engine path | executes gateway-local legacy tender action | may emit legacy tender outbox event |
| POST /api/v1/tenders/legacy/:id/award/propose | legacy local-engine path | executes gateway-local legacy tender action | may emit legacy tender outbox event |
| POST /api/v1/tenders/legacy/:id/award/ratify | legacy local-engine path | executes gateway-local legacy tender action | may emit legacy tender outbox event |
The tender legacy path has an extra boundary concern beyond route handling:
TENDERS_SERVICE_URLLEGACY_TENDERS_OUTBOX_PATH, default /legacy/tenders/eventsTENDER_CREATEDBID_SUBMITTEDBIDDING_CLOSEDAWARD_PROPOSEDAWARD_RATIFIEDClassification:
gateway-side event emission pathlegacy compatibility behavior/legacy/* routes mounted from legacyRoutes.ts/legacy/* routesThe strongest follow-on cleanup target is:
That next step should: