Loading module
Resolving locale, route permissions, and workspace projection.
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
| Surface | Current path | Classification | Notes |
| --- | --- | --- | --- |
| Public vacancy list | GET /vacancies | MIXED / compatibility route surface | Uses preferred vacancy read repository, but that repository still unions projection-backed rows with legacy vacancies. |
| Public vacancy detail | GET /vacancies/:id | MIXED / compatibility route surface | Checks projection detail first, then falls back to legacy vacancies. |
| Applicant application list | GET /vacancy-applications/me | stable route surface | Requires auth; reads from my_vacancy_applications_view. |
| Submit vacancy application | POST /vacancy-applications | stable route surface | Requires auth and vacancy-application submit capability. |
| Withdraw vacancy application | POST /vacancy-applications/:id/withdraw | stable route surface | Requires auth and vacancy-application withdraw capability. |
| Review actions | POST /vacancy-applications/:id/shortlist, /reject, /accept | stable route surface | Auth-protected owner-side application decisions. |
| Posting create/update | POST /vacancy-postings, PATCH /vacancy-postings/:id | stable route surface | Core vacancy posting mutations. |
| Posting publish/close/reopen | POST /vacancy-postings/:id/publish, /close, /reopen | stable route surface | Clear lifecycle mutation surface. |
| Owner posting list/detail | GET /owner/vacancy-postings, GET /owner/vacancy-postings/:id | stable route surface | Uses vacancy-owned reads over vacancy_postings. |
| Owner applications list/detail | GET /owner/vacancy-applications, GET /owner/vacancy-applications/:id | stable route surface | Reads from direct joins over vacancy_applications + vacancy_postings. |
| Posting applications by posting | GET /vacancy-postings/:id/applications | mostly stable, lightly composed | Owner check and application list are vacancy-owned; the response also loads vacancy summary through the broader public finder. |
| Gateway route module | Target resolution | Classification | Notes |
| --- | --- | --- | --- |
| services/api/src/routes/vacancies.ts | VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL | stable shared seam | Ready for extracted runtime targeting. |
| services/api/src/routes/vacancy-postings.ts | VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL | stable shared seam | Includes auth-protected posting mutations and review list-by-posting. |
| services/api/src/routes/vacancy-applications.ts | VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL | stable shared seam | Includes submit, me-list, owner decision, withdraw. |
| services/api/src/routes/owner-vacancy-postings.ts | VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL | stable shared seam | Owner/internal read path already isolated at gateway level. |
| services/api/src/routes/owner-vacancy-applications.ts | VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL | stable shared seam | Same. |
Created in vacancy write-model migration lineage:
vacancy_postingsvacancy_applicationsvacancy_postings_viewvacancy_posting_detail_viewmy_vacancy_applications_viewvacancy_applications_by_posting_viewThese are the real current vacancy write/read-model surfaces.
Legacy public discovery table:
vacanciesThis table is still part of public vacancy truth because VacancyReadRepository.listAllVacancies() and findVacancyById() fall back to it when no projection-backed posting exists.
Vacancy-dominant migration surfaces:
0032_vacancy_write_model.sql0044_add_details_json_to_views.sqlMixed vacancy/accommodation context surfaces:
0042_vacancy_accommodation_context.sql0043_vacancy_accommodation_declaration_details.sqlLegacy compatibility residue:
0005_vacancies_accommodations.sqlThe public routes are not shell-mixed because of auth or gateway composition. They are mixed because the preferred vacancy repository still treats the legacy vacancies catalog as fallback truth.
Best current extraction shape:
This makes Vacancy less like ICPI or post-cutover Accommodation, where runtime truth was cleaner before final cutover.