エラーコード
API のエラーは RFC 9457 の application/problem+json で返します。機械向けの値は code に入ります。
{
"type": "https://www.blipdrop.net/nodd/en/docs/errors/#open_actions_exceeded",
"title": "The limit of open requests has been reached",
"status": 409,
"code": "open_actions_exceeded"
}
typeは、このページの英語版の該当する項目を指します- 判定には
codeを使います。titleとdetailの文は変わることがあります titleとdetailは英語で返します。Accept-Language: jaを付けると日本語で返します- 再試行できるコードには
Retry-Afterヘッダーが付きます
invalid_key
キーがない、形式が違う、失効した、期限が切れた、種類が違う、またはワークスペースが閉じています。理由は言い分けません。
対処:Authorization: Bearer の値を確かめます。読み取りキーでは送信できず、送信キーでは GET /v1/actions/events を読めません。分からなければアプリで再発行します。
key_revoked
API の仕様の一覧にある値ですが、現在のサーバーは返しません。失効したキーは invalid_key になります。
対処:invalid_key と同じに扱います。
invalid_session
アプリのセッションが切れたか、Apple のサインインを確認できません。アプリの API で返します。
対処:アプリでサインインし直します。送信キーの API では返しません。
plan_required
プランの範囲を超えています。detail に理由が入ります。2 人以上の承認や引き継ぎを無料で使う、オープンチャンネルを無料で作る、チャンネル数や人数枠の上限、無料のワークスペースを 2 つ持とうとした、同じ端末で別の Apple ID が無料枠を使っている、などです。
対処:detail を読み、Team へ変えるか、指定を外します。
forbidden
権限がありません。Viewer が応答した、Manager でない人がキーを管理した、閉じたチャンネルへ送信した、などです。
対処:役割を確かめます。役割はマニュアルにまとめています。
channel_paused
1 つのチャンネルへの受け付けが 1 分に 60 回を超えたので、5 分止めています。止めたときに一度だけチャンネルへ知らせが届きます。
対処:Retry-After の秒数を待ちます。時間が過ぎると自動で戻ります。送信元が暴走していないか確かめます。
channel_read_only
プランが下がってチャンネル数が上限を超えたので、新しいチャンネルから送信を止めています。受け取りと応答は続けられます。
対処:Team へ戻すか、チャンネルを閉じて上限の内に収めます。
invalid_signature
端末の署名を確かめられません。Face ID が必要な操作で確認がなかった場合もこのコードです。アプリの API で返します。
対処:アプリを最新にしてやり直します。続くときはサインインし直します。
attestation_failed
端末の登録で App Attest の確認に失敗しました。アプリの API で返します。
対処:実機の iPhone で、App Store から入れたアプリを使います。
not_found
対象がないか、そのキーからは見えません。別のチャンネルの通知もこのコードです。
対処:ID と、キーのチャンネルを確かめます。
open_actions_exceeded
応答待ちの件数がプランの上限(無料 3 件、Team 500 件)に達しました。ボタンなしで届けることはせず、送信を拒否します。
対処:応答を待つか、不要な依頼を POST /v1/messages/{id}/cancel で取り下げます。
already_claimed
先に別の応答が記録されました。取り下げの場合は、押された後なので取り下げられません。
対処:GET /v1/messages/{id} で結果を読みます。
invalid_state
今の状態ではできない操作です。title に理由が入ります。完了した進捗の更新、progress 以外の更新、結果を報告できない状態、同じ人の 2 回目の承認、失効したキーの再発行、ほかのメンバーがいる Owner の退会などです。
対処:title を読み、状態を確かめてからやり直します。
action_expired
端末が署名した時刻が応答期限より後か、応答期限の 10 分後を過ぎて届きました。
対処:送り直します。未応答を承認として扱わないでください。
payload_too_large
POST /v1/messages と PATCH は 16 KB、受信 URL は 256 KB を超えました。
対処:本文を短くします。項目の上限は API にあります。
validation_failed
項目の値が仕様に合いません。知らない項目も拒否します。detail に理由が入ります。
対処:detail を読んで直します。
unsupported_level
API の仕様の一覧にある値ですが、現在のサーバーは返しません。level に critical など知らない値を送ると validation_failed になります。
対処:low、normal、high のいずれかを使います。
callback_unverified
応答の送信先の登録で、URL が challenge を返しませんでした。アプリの画面で出ます。
対処:登録の手順のとおり、2xx の本文に値を含めて返します。
rate_limited
同じキーの要求が 10 秒に 10 回を超えました。同じ通知の状態の取得にも別に同じ枠があります。
対処:Retry-After の秒数を空けます。
monthly_limit
今月の上限に達しました。high だけ上限の 10% まで送れます。
対処:Retry-After は来月 1 日(UTC)までの秒数です。再試行しても通らないので、来月まで待つか Team へ変えます。
internal
サーバーの内部で失敗しました。
対処:少し待って再試行します。送信は Idempotency-Key を付けると二重に届きません。続くときは support@blipdrop.net へ時刻を添えて連絡してください。
not_implemented
アプリの API にない操作です。
対処:URL とメソッドを確かめます。アプリを最新にします。
maintenance
運転モードが read_only か intake_stopped です。intake_stopped では新しい通知だけを止め、取り下げや解消は通します。
対処:Retry-After の秒数(300 秒)を空けます。GET /v1/meta で運転モードを見られます。
overloaded
サーバーが混み合っていて受け付けられません。
対処:Retry-After の秒数(30 秒)を空けて再試行します。