Chapter 6

エラーコードと制限

返却されるエラーの読み方と、連携時に踏みやすい制限の一覧です。

エラーの形式

エラーは Connect RPC の形式で返ります。HTTP ステータスとcode が対応し、message には利用者に見せられる 日本語の説明が入ります。

HTTP/1.1 403 Forbidden
{
  "code": "permission_denied",
  "message": "権限がありません。自分と同等以上の権限を持つユーザーは操作できません。"
}

主なコード

codeHTTP意味対処
invalid_argument400入力値が不正メッセージを利用者に提示して再入力を促す
unauthenticated401未認証、または資格情報が無効トークンを更新し、失敗したら再ログインさせる
permission_denied403権限不足再試行しても成功しない。UI 側で操作を隠す
not_found404対象が存在しない、またはトークンが無効一覧を取り直す
already_exists409すでに登録済みメールアドレスの重複など
failed_precondition412状態が前提を満たさない二段階認証が未設定なのに無効化した場合など
resource_exhausted429レート制限に到達時間をおいて再試行する。即時の再試行は無意味
internal500サーバー側の障害requestId を添えて問い合わせる
500 応答には requestId が含まれます。障害の調査にはこの値が 必要になるため、あなたのサービス側のログにも残しておくことをおすすめします。

レート制限

対象上限単位
ログイン5回 / 15分アカウントごと
ログイン30回 / 15分送信元IPごと
新規登録3回 / 1時間送信元IPごと
パスワード再設定の要求3回 / 1時間アカウントごと
パスワード再設定の要求10回 / 1時間送信元IPごと
トークン更新20回 / 15分セッションごと
二段階認証コードの試行5回 / 15分アカウントごと
メールアドレス変更の要求5回 / 1時間アカウントごと
アバターのアップロード20回 / 1時間アカウントごと
ログイン試行はアカウント単位でも制限されます。連続で失敗させると 正規の利用者がしばらくログインできなくなるため、 自動リトライは実装しないでください。

その他の制限

項目制限
アクセストークンの有効期限15分
リフレッシュトークンの有効期限14日
セッションの有効期限14日
パスワードの長さ8〜128文字
アバター画像2MB まで / JPEG・PNG・WebP・GIF
有効な API キー1アカウントにつき10件
メール確認リンクの有効期限24時間
パスワード再設定リンクの有効期限1時間
二段階認証チャレンジの有効期限5分