Davetleri toplu oluştur
POST /v1/invitations:batch · izin invitations:write
1 ile 100 arasında davet (items) oluşturur. Her öğe POST /v1/invitations kurallarını izler ve kendi başına yazılır: hatalı bir öğe diğerlerini durdurmaz. Yanıt 200 OK olur ve items, istek sırasını korur. Bir öğenin status değeri 201 (yeni davet), 200 (bekleyen bir davet yeniden gönderildi) veya hatasının HTTP durumudur; başarısız bir öğe, code ve status içeren bir error ile /items/<i>/… biçiminde alan işaretçilerini taşır. link_only öğelerinin accept_url değeri yalnızca bu yanıtta döndürülür (Cache-Control: no-store); Idempotency-Key ile tekrar oynatılan bir yanıtta bağlantılar bulunmaz ve secret_redacted: true döner. organization_id içermeyen bir öğe ortam davetidir. email öğesi e-posta ile gönderilir; davet e-postası bu dağıtım için yapılandırılmamışsa bu bir öğe hatası olarak 501 not_implemented döner ve bu ortamda bulunmayan bir application_id bir öğe hatası olarak 404 not_found döner. Yazılan her davet invitation.created olarak denetlenir.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
items |
object[] | evet | POST /v1/invitations alanlarını içeren 1 ile 100 arasında davet. |
Idempotency-Key |
header | hayır | Yeniden denemenin, bağlantısız saklanan sonucu döndürmesini sağlar. |
Yanıt
Her öğe için bir sonuç içeren 200 OK.
{
"items": [
{
"status": 201,
"invitation": {
"id": "inv_01j9xt9v3w4y8z0a2b4c6d8e0g",
"organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"email": "ada@example.com",
"role_ids": [
"rol_01j9xr7s1t2w6x8y0z2a4b6c8e"
],
"application_id": null,
"delivery": "link_only",
"delivery_status": "not_sent",
"status": "pending",
"send_count": 1,
"last_sent_at": "2026-10-12T09:31:00.123456Z",
"expires_at": "2026-10-19T09:31:00.123456Z",
"accepted_user_id": null,
"accepted_at": null,
"revoked_at": null,
"created_at": "2026-10-12T09:31:00.123456Z",
"updated_at": "2026-10-12T09:31:00.123456Z",
"version": 1,
"accept_url": "https://acme.eu.keenauth.app/u/login?invitation=<token>"
}
},
{
"status": 422,
"error": {
"code": "validation_failed",
"status": 422,
"errors": [
{
"pointer": "/items/1/email",
"code": "invalid_value"
}
]
}
}
]
}
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 422 | validation_failed |
items eksik, boş veya 100'den uzun. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde gerekli izin yok. Ayrıcalıklı (is_privileged) bir rol içeren öğe, kimlik bilgisinde roles:write yoksa bu öğe hatasıyla başarısız olur. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
curl -i -X POST "https://api.eu.keenauth.com/v1/invitations:batch" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 0f6c1d2e3a4b5c6d7e8f9a0b" \
-d '{"items":[{"organization_id":"org_01j9xk3m7q8r2s4t6v8w0y2z4a","email":"ada@example.com","delivery":"link_only"},{"organization_id":"org_01j9xk3m7q8r2s4t6v8w0y2z4a","email":"bob@example.com","delivery":"link_only"}]}'
Kişisel veriler
Bu uç noktada kişisel veriler bulunur: kuruluş üyelikleri ve davetler. KeenAuth API'lerindeki kişisel veriler hangi verilerin saklandığını, ne kadar süre tutulduğunu ve nasıl silindiğini açıklar. Hiçbir alanda özel nitelikli kişisel verileri (sağlık, biyometrik veriler, din, siyasi görüşler, cinsel yönelim) göndermeyin.