エラーコード

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

invalid_key

HTTP 401 ・ キーを確認できません

キーがない、形式が違う、失効した、期限が切れた、種類が違う、またはワークスペースが閉じています。理由は言い分けません。

対処:Authorization: Bearer の値を確かめます。読み取りキーでは送信できず、送信キーでは GET /v1/actions/events を読めません。分からなければアプリで再発行します。

key_revoked

HTTP 401 ・ (現在は返しません)

API の仕様の一覧にある値ですが、現在のサーバーは返しません。失効したキーは invalid_key になります。

対処:invalid_key と同じに扱います。

invalid_session

HTTP 401 ・ 再度サインインしてください

アプリのセッションが切れたか、Apple のサインインを確認できません。アプリの API で返します。

対処:アプリでサインインし直します。送信キーの API では返しません。

plan_required

HTTP 402 ・ プランの変更が必要です

プランの範囲を超えています。detail に理由が入ります。2 人以上の承認や引き継ぎを無料で使う、オープンチャンネルを無料で作る、チャンネル数や人数枠の上限、無料のワークスペースを 2 つ持とうとした、同じ端末で別の Apple ID が無料枠を使っている、などです。

対処:detail を読み、Team へ変えるか、指定を外します。

forbidden

HTTP 403 ・ この操作はできません

権限がありません。Viewer が応答した、Manager でない人がキーを管理した、閉じたチャンネルへ送信した、などです。

対処:役割を確かめます。役割はマニュアルにまとめています。

channel_paused

HTTP 403 ・ Retry-After あり ・ チャンネルは一時停止中です

1 つのチャンネルへの受け付けが 1 分に 60 回を超えたので、5 分止めています。止めたときに一度だけチャンネルへ知らせが届きます。

対処:Retry-After の秒数を待ちます。時間が過ぎると自動で戻ります。送信元が暴走していないか確かめます。

channel_read_only

HTTP 403 ・ プランの上限を超えたチャンネルです

プランが下がってチャンネル数が上限を超えたので、新しいチャンネルから送信を止めています。受け取りと応答は続けられます。

対処:Team へ戻すか、チャンネルを閉じて上限の内に収めます。

invalid_signature

HTTP 403 ・ 署名を確認できません

端末の署名を確かめられません。Face ID が必要な操作で確認がなかった場合もこのコードです。アプリの API で返します。

対処:アプリを最新にしてやり直します。続くときはサインインし直します。

attestation_failed

HTTP 403 ・ この端末を確認できませんでした

端末の登録で App Attest の確認に失敗しました。アプリの API で返します。

対処:実機の iPhone で、App Store から入れたアプリを使います。

not_found

HTTP 404 ・ 見つかりません

対象がないか、そのキーからは見えません。別のチャンネルの通知もこのコードです。

対処:ID と、キーのチャンネルを確かめます。

open_actions_exceeded

HTTP 409 ・ 同時応答待ちの上限です

応答待ちの件数がプランの上限(無料 3 件、Team 500 件)に達しました。ボタンなしで届けることはせず、送信を拒否します。

対処:応答を待つか、不要な依頼を POST /v1/messages/{id}/cancel で取り下げます。

already_claimed

HTTP 409 ・ すでに応答されています

先に別の応答が記録されました。取り下げの場合は、押された後なので取り下げられません。

対処:GET /v1/messages/{id} で結果を読みます。

invalid_state

HTTP 409 ・ 内容によって変わります

今の状態ではできない操作です。title に理由が入ります。完了した進捗の更新、progress 以外の更新、結果を報告できない状態、同じ人の 2 回目の承認、失効したキーの再発行、ほかのメンバーがいる Owner の退会などです。

対処:title を読み、状態を確かめてからやり直します。

action_expired

HTTP 410 ・ 応答期限を過ぎています

端末が署名した時刻が応答期限より後か、応答期限の 10 分後を過ぎて届きました。

対処:送り直します。未応答を承認として扱わないでください。

payload_too_large

HTTP 413 ・ 本文が大きすぎます

POST /v1/messages と PATCH は 16 KB、受信 URL は 256 KB を超えました。

対処:本文を短くします。項目の上限は API にあります。

validation_failed

HTTP 422 ・ 内容が正しくありません

項目の値が仕様に合いません。知らない項目も拒否します。detail に理由が入ります。

対処:detail を読んで直します。

unsupported_level

HTTP 422 ・ (現在は返しません)

API の仕様の一覧にある値ですが、現在のサーバーは返しません。level に critical など知らない値を送ると validation_failed になります。

対処:low、normal、high のいずれかを使います。

callback_unverified

HTTP 422 ・ URLの所有を確認できませんでした

応答の送信先の登録で、URL が challenge を返しませんでした。アプリの画面で出ます。

対処:登録の手順のとおり、2xx の本文に値を含めて返します。

rate_limited

HTTP 429 ・ Retry-After あり ・ 送信が多すぎます

同じキーの要求が 10 秒に 10 回を超えました。同じ通知の状態の取得にも別に同じ枠があります。

対処:Retry-After の秒数を空けます。

monthly_limit

HTTP 429 ・ Retry-After あり ・ 今月の送信数の上限です

今月の上限に達しました。high だけ上限の 10% まで送れます。

対処:Retry-After は来月 1 日(UTC)までの秒数です。再試行しても通らないので、来月まで待つか Team へ変えます。

internal

HTTP 500 ・ 処理できませんでした

サーバーの内部で失敗しました。

対処:少し待って再試行します。送信は Idempotency-Key を付けると二重に届きません。続くときは support@blipdrop.net へ時刻を添えて連絡してください。

not_implemented

HTTP 501 ・ 未実装です

アプリの API にない操作です。

対処:URL とメソッドを確かめます。アプリを最新にします。

maintenance

HTTP 503 ・ Retry-After あり ・ 現在は受け付けていません

運転モードが read_only か intake_stopped です。intake_stopped では新しい通知だけを止め、取り下げや解消は通します。

対処:Retry-After の秒数(300 秒)を空けます。GET /v1/meta で運転モードを見られます。

overloaded

HTTP 503 ・ Retry-After あり ・ 混み合っています

サーバーが混み合っていて受け付けられません。

対処:Retry-After の秒数(30 秒)を空けて再試行します。