Vacancy API And Persistence Surface
Route / API Surface
| 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 | , , | stable route surface | Auth-protected owner-side application decisions. |
| Posting create/update | , | stable route surface | Core vacancy posting mutations. |
| Posting publish/close/reopen | , , | stable route surface | Clear lifecycle mutation surface. |
| Owner posting list/detail | , | stable route surface | Uses vacancy-owned reads over . |
| Owner applications list/detail | , | stable route surface | Reads from direct joins over + . |
| Posting applications by posting | | mostly stable, lightly composed | Owner check and application list are vacancy-owned; the response also loads vacancy summary through the broader public finder. |