v1.0.0
2026-06-02Initial stable v1 surface. 60+ HTTP endpoints across auth, tenants, vacancies, candidates, offers, interviews, AI, library, uploads, webhooks, audit, and account/NDPR. Versioned routing alias (/api/v1/X) shipped; future breaking changes will live at /api/v2/* with this surface preserved for a deprecation window.
Added
- ·Versioned routing — /api/v1/X is internally aliased to /api/X (middleware rewrite). Lets us promise a stable v1 surface to pilot customers.
- ·Postman collection auto-generator — emits public/talentos-postman.json from app/api-docs/sections.ts. Downloadable from /api-docs. ref
- ·Webhook payload simulator — /api/_dev/webhook-test returns the signed envelope + X-TalentOS-Signature header so integrators can verify their handler before wiring real events. ref
- ·Webhooks: 8 event types (candidate.applied, candidate.stage_changed, vacancy.published, offer.sent, offer.accepted, offer.declined, interview.scheduled, interview.completed). HMAC-SHA256 signed, exponential-backoff retries (30s → 6h, 6 attempts), auto-disable after 20 consecutive failures. ref
- ·Offers — full CRUD at /api/offers with status transitions sent/accepted/declined; acceptance auto-bumps candidate to hired + vacancy.hired counter. ref
- ·Interviews — full CRUD at /api/interviews with inline scorecards; status=completed fires interview.completed webhook. ref
- ·Bearer-token auth alongside cookie sessions. Mint at /account → API keys; every protected endpoint accepts Authorization: Bearer tk_… ref
- ·AI decision log — every AI screen / draft-offer / attrition-risk call records inputs, outputs, model, tokens, cost, and tenant. EU AI Act art. 26 transparency. ref
- ·SCIM 2.0 provisioning — /api/scim/v2/{Users,Groups} for enterprise IDPs (Okta, Azure AD, Google Workspace). Per-tenant bearer token.
- ·GDPR/NDPR data-rights endpoints — GET /api/account/export and POST /api/account/delete (typed tenant-id confirmation). ref
- ·Public careers API — GET /api/careers/vacancies and POST /api/careers/apply for the candidate-facing portal. Auth=public; tenant-scoped writes via vacancyId. ref
Changed
- ·Bumped from internal/alpha to v1.0.0 stable. This page (and semver) is the contract going forward.
Security
- ·Origin/Referer CSRF defence on every mutating /api/* call. Bearer-authed callers and GET/HEAD/OPTIONS bypass.
- ·AES-256-GCM at-rest encryption for per-tenant secrets (Anthropic API keys, SSO client secrets, SCIM tokens). Platform key never exposed client-side.
- ·Cross-tenant reads/writes return 404 (never 403) to avoid leaking the existence of records in other tenants.