API Tender Legacy Bridge Status
Date: 2026-03-19 Sprint: Platform Cleanup Sprint 104
Scope
This document isolates the tender legacy compatibility route shell from the gateway-side legacy outbox bridge that still lives in the same module.
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
Date: 2026-03-19 Sprint: Platform Cleanup Sprint 104
This document isolates the tender legacy compatibility route shell from the gateway-side legacy outbox bridge that still lives in the same module.
services/apiIt is not removal planning. It is a boundary-clarification step before later removal planning.
| Route | Local action | Route classification | Bridge classification | Operational need today | Separable? | Looks isolatable next? |
| --- | --- | --- | --- | --- | --- | --- |
| POST /api/v1/tenders/legacy/propose | proposeTenderFromKes | legacy compatibility route that also triggers gateway-side bridge behavior | emits TENDER_CREATED through the bridge helper | yes | yes | yes |
| POST /api/v1/tenders/legacy/:id/bids | submitLegacyBid | legacy compatibility route that also triggers gateway-side bridge behavior | emits BID_SUBMITTED through the bridge helper | yes | yes | yes |
| POST /api/v1/tenders/legacy/:id/close | closeLegacyBidding | legacy compatibility route that also triggers gateway-side bridge behavior | emits BIDDING_CLOSED through the bridge helper | yes | yes | yes |
| POST /api/v1/tenders/legacy/:id/award/propose | proposeLegacyAward | legacy compatibility route that also triggers gateway-side bridge behavior | emits AWARD_PROPOSED through the bridge helper | yes | yes | yes |
| POST /api/v1/tenders/legacy/:id/award/ratify | ratifyLegacyAward | legacy compatibility route that also triggers gateway-side bridge behavior | emits AWARD_RATIFIED through the bridge helper | yes | yes | yes |
The route shell in legacyRoutes.ts:
LEGACY_TENDERS_LOCAL_ENGINE_ENABLEDThat route shell is compatibility behavior. It is not canonical upstream tender action ownership.
enqueueLegacyTenderBridgeEvent(...)TENDERS_SERVICE_URLLEGACY_TENDERS_OUTBOX_PATH, default /legacy/tenders/eventstenderIdeventTypeactorIdintentIddedupeKeypayload/api/v1/tenders/legacy/*TENDERS_SERVICE_URL + LEGACY_TENDERS_OUTBOX_PATHTENDER_CREATEDBID_SUBMITTEDBIDDING_CLOSEDAWARD_PROPOSEDAWARD_RATIFIEDintentId and dedupeKey derivation502 legacy_outbox_enqueue_failedThe strongest next isolation step is:
/api/v1/tenders/legacy/* route shape unchangedThat would reduce ambiguity without starting removal.