code は安定しており、分岐に使って安全です。message は人間向けで変わることがあります。details は
問題のフィールドを特定できるときに含まれます。
コード
400 は解析や理解ができないリクエストに使います。422 は形式は完全に正しいものの、指定された地域では
提供できないリクエスト専用です。ステータスより error.code で分岐するほうが長く安定します。地域による拒否
2つの地域コードはいずれもタスクをキューに入れる前に判定されます。タスクが再試行予算を使い切って 症状だけのエラーで失敗するのを待つ必要はなく、すぐに分かります。REGION_UNSUPPORTED は恒久的です。そのエンジンは指定された国を提供できません。
REGION_UNAVAILABLE は一時的です。経路はありますが、今は提供できるものがありません。
GET /capacity で各地域が現在提供できる範囲を確認してください。
バッチの失敗は項目ごと
正しい形式のバッチは、中のタスクがすべて失敗しても常に200 を返します。HTTPステータスはリクエストを、
results[].success は各タスクを表します。
バッチ項目は
REGION_UNAVAILABLE または ENQUEUE_ERROR で失敗することがありますが、どちらもこのAPIが
実装する非同期タスク契約の項目別エラーenumにはありません。いずれも置き換えではなく追加であり、
VALIDATION_ERROR と RESOURCE_ALREADY_EXISTS は変わりません。タスクレベルの失敗
キューに入った後に失敗したタスクは、HTTPエラーを一切生みません。終了ステータスで分かります。error は、リクエストレベルのエラーが使う
{code, message, timestamp} オブジェクトではなく文字列です。コードで始まり、そのコードごとに決まった
文が続くため、コードで分岐してください。ENGINE_TIMEOUT、ENGINE_NO_RESULT、ENGINE_FAILED のほか、時間内に
処理枠が空かなかった場合は NO_IP_AVAILABLE または NO_ACCOUNT_AVAILABLE です(通常は後で再試行すれば成功します)。
BAD_PAYLOAD と PAGE_UNAVAILABLE(匿名では読めないNAVERのページ)は、何を変えればよいかを示すメッセージを
そのまま返します。同じタスクは task.status === "FAILED" のWebhookも配信します。