招待の一括作成

POST /v1/invitations:batch · 権限 invitations:write

1 〜 100 件の招待(items)を作成します。各項目は POST /v1/invitations のルールに従い、それぞれ個別に書き込まれます。ある項目が失敗しても、他の項目は中断されません。レスポンスは 200 OK で、items はリクエストの順序を保持します。項目の status は 201(新規の招待)、200(保留中の招待を再送)、またはエラーの HTTP ステータスのいずれかです。失敗した項目には code、status、/items/<i>/… 形式のフィールドポインタを含む error が含まれます。link_only の項目の accept_url は、このレスポンスでのみ返されます(Cache-Control: no-store)。Idempotency-Key を指定して再生されたレスポンスにはリンクが含まれず、secret_redacted: true が返されます。organization_id を指定しない項目は、環境の招待になります。email の項目はメールで送信されます。デプロイ環境で招待メールが設定されていない場合は、501 not_implemented の項目エラーになります。この環境に存在しない application_id は、404 not_found の項目エラーになります。作成された各招待は invitation.created として監査ログに記録されます。

リクエスト

フィールド 型 必須 説明
items object[] はい 1 〜 100 件の招待。各要素は POST /v1/invitations のフィールドを持ちます。
Idempotency-Key header いいえ 再試行時に、リンクを含まない保存済みの結果を返します。

レスポンス

200 OK。項目ごとに 1 件の結果が返されます。

{
  "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"
          }
        ]
      }
    }
  ]
}

エラー

HTTP code 発生条件
422 validation_failed items が欠けている、空である、または 100 件を超えています。
401 unauthenticated 認証情報が指定されていない、無効、または取り消されています。
403 insufficient_permissions 認証情報に必要な権限がありません。特権(is_privileged)ロールを持つ項目は、認証情報に roles:write がない場合、この項目エラーで失敗します。
429 rate_limited レート制限を超えました。Retry-After の期間が経過してから再試行してください。
503 service_unavailable 依存先が一時的に利用できません。Retry-After の期間が経過してから再試行してください。

例

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"}]}'

個人データ

このエンドポイントは個人データ(組織のメンバーシップと招待)を扱います。KeenAuth API における個人データでは、保存される内容、保持期間、削除方法を説明しています。いずれのフィールドにも、特別な種類の個人データ(健康、生体情報、宗教、政治的意見、性的指向)を送信しないでください。