Runner database: identity dan tenancy
Status: halaman ini menjelaskan boundary dan vocabulary Runner. Ketersediaan route/model spesifik harus diverifikasi pada
apps/apidan Execution Roadmap; jangan menafsirkan contoh sebagai kontrak publik yang otomatis tersedia.
runner adalah source of truth untuk identity, session, Organization tenant root, Member/RBAC, Team, Workspace, Collaboration, dan HR. User tidak otomatis menjadi Member, Employee, atau owner Organization.
Auth dan identity
Model utama: User, Account, Session, Verification, PasswordReset, Passkey, TwoFactor, dan Jwks. Operasi sign-in/sign-up/session mengikuti handler better-auth. Jangan membuat endpoint CRUD manual untuk password, token, private key, atau backup code.
- Password dan token selalu diproses server-side.
- Session memiliki
expiresAtdanactiveOrganizationId. - Account menghubungkan provider ke
userId. - 401 harus menghapus asumsi session di client dan mengarahkan login.
Organization dan membership
Organization menyimpan ownerId, parentId, profil, kategori, alamat, FAQ, workspace, member, employee, team, collaboration, dan permission role. Member menjadi boundary akses resource organisasi; Employee adalah lifecycle HR terpisah.
POST /api/organization
GET /api/organization/:organizationId
PATCH /api/organization/:organizationId
DELETE /api/organization/:organizationIdSebelum mutasi, API wajib memastikan user adalah owner/member aktif dan bahwa organizationId valid. Child records harus membawa scope organisasi yang sama.
FAQ
FAQ berada di runner dan terkait langsung dengan organization. Dokumentasikan FAQ sebagai subsection domain organization, bukan halaman terpisah. Payload minimal harus divalidasi di server; jangan menerima organizationId dari body sebagai satu-satunya bukti akses.
{
"question": "Bagaimana cara memulai?",
"answer": "Gunakan panduan onboarding.",
"organizationId": "<validated organization id>"
}Cross-database contract
organizationId direferensikan oleh Billing, Catalog, Commerce, dan Inventory sebagai scalar. Runner memvalidasi tenancy; database domain memvalidasi resource lokal. Tidak ada transaksi Prisma lintas lima database, sehingga workflow multi-write perlu outbox/inbox idempoten, retry terbatas, compensation, dan reconciliation.