Davetler
Endpoint'ler
POST /api/v1/workspace/members/invite gönder (auth, admin, gated, kota-uygulanır)
GET /api/v1/workspace/invitations bekleyenleri listele (auth, admin)
POST /api/v1/workspace/invitations/:id/revoke iptal et (auth, admin)
GET /api/v1/invitations/:token public lookup (auth yok — token gizlidir)
POST /api/v1/invitations/:token/accept kabul et (auth)Davet alanları
typescript
{
workspace_id: ObjectId,
email: string, // küçük harf, indexed
role: "owner" | "admin" | "editor" | "author" | "viewer", // varsayılan "author"
token: string, // base64url-encoded 32-byte secret
status: "pending" | "accepted" | "revoked" | "expired",
invited_by: ObjectId,
expires_at: Date,
accepted_at: Date | null,
accepted_by: ObjectId | null,
revoked_at: Date | null,
}Akış
- Admin
POST /workspace/members/invite { email, role }gönderir. Sosyabot 32-byte birtokenüretir ve bir kabul linki gönderir. - Alıcı linke tıklar,
/invitation-accept'e (frontend) iner; bu, davet detaylarını göstermek içinGET /invitations/:tokençağırır. - Alıcı oturum açıksa (veya önce kayıt olursa), sayfa
POST /invitations/:token/acceptçağırır. Endpointstatus'uaccepted'a taşır, kullanıcıyı çalışma alanına katar veaccepted_by'yi ayarlar.
Token, public lookup için gereken tek auth'tur; bir secret olarak ele al. Bir daveti iptal etmek (/revoke) status'u revoked'a çevirir ve token çalışmayı bırakır.