Vacancy Public Read Decision
Current Public Read Truth
The current public vacancy routes are:
GET /vacancies
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
The current public vacancy routes are:
GET /vacanciesGET /vacancies/:idThose routes already depend on the preferred vacancy route-time repository:
services/svc-tenders/src/vacancy/readRepository.tsThat is the truthful preferred runtime dependency.
However, the public read truth inside that preferred repository is still mixed:
vacancy_postings_viewvacancy_posting_detail_viewvacanciesSo the preferred route dependency is real, but the public discovery data source behind it is not yet fully converged onto vacancy-owned projection truth.
GET /vacanciesVacancyReadRepository.listAllVacancies():
vacancy_postings_viewvacanciesThis means the public list is intentionally mixed.
GET /vacancies/:idVacancyReadRepository.findVacancyById():
vacancy_posting_detail_viewvacanciesThis means the public detail route is also intentionally mixed.
Compatibility residue still involved in public vacancy discovery:
vacancies tableservices/svc-tenders/src/repository.tsVacancyCompatibilityReadRepositoryVACANCY_CATALOGImportant asymmetry:
Current web vacancy consumption is also mixed:
apps/web/src/portal/api.ts prefers the backend/API vacancy routesVACANCY_CATALOGapps/web/src/features/domains/vacancyDetail.tsSo the web does not yet treat backend vacancy DTOs as the only vacancy detail/catalog source.
Recommended direction:
/vacancies and /vacancies/:id as an explicit compatibility seam for early extractionNot recommended as the next step:
Why compatibility seam first is safer:
VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URLVacancyReadRepositoryvacanciesWhat this decision does not mean:
vacancies should be treated as canonical long-term vacancy truthThe safe next step is:
/vacancies onto projection-backed truth before claiming public-read cleanliness