一般的な応答の構造
正常な応答は、リクエスト、作成、変更、または削除されたオブジェクトを含む200シリーズのHTTPコードおよびJSONベースのペイロードと、リクエストにおけるサーバーの解釈の記述とともに示されます。
正常なリクエストを発行した場合、応答の一部として、リクエストをエコーバックするrequestノードを受け取ります。
例: GET accounts/abcdefg/campaigns?with_deleted=true
{
/* the data of your response... */,
"request": {
"params": {
"account_id": "abcdefg",
"with_deleted": "true"
}
}
}
JSON応答のdataフィールドには、活用したリソースに関連した特定のオブジェクトが含まれます。応答に1つ以上の結果が含まれている可能性がある場合、dataノードの形式はJSON配列になります。応答で可能な結果が1つのみの場合、JSONハッシュとして返されます。稀なケースでは、通常はハッシュマップのコレクションが含まれる応答が代わりに表示される場合があります。この場合、ハッシュマップが1つであればtypeフィールドで指定される同じタイプのオブジェクトになると仮定してください。
エラー応答の構造
エラー応答は200シリーズ以外のHTTPコードで表示されます。通常、JSON応答は添付されますが、エラーの中には別のボディで応答することがあります。このような状況では応答の構造が構文解析できないため、HTTPコードの主な意味を優先してください。たとえば、HTTP 404とともにHTML応答が表示される場合があります。この場合、コンテンツが見つからないと仮定できます(HTTP 404は「Not Found(見つかりません)」という意味です)。
通常のエラー応答は、正常な応答と似たような構造に従います。エラーの性質は、応答のerrorsノードで通信されます。errors/codeノードは、プログラムを使って解決策の決定を消費できるCAPS_CASEコンスタントエラーコードを示します。errors/messageノードは(通常)人間が読めるエラーの説明を英語で示します。追加フィールドが添付され、エラーのより具体的な詳細が示される場合があります。
{
"errors": [
{
"parameter": "start_time",
"details": "invalid date",
"code": "INVALID_PARAMETER",
"value": "",
"message": "Expected time, got "" for start_time"
}
],
"request": {
"params": {
"account_id": "hkk5"
}
}
}
上の例では、アナリティクスエンドポイントへのリクエストは、start_timeパラメータに無効な値が入っていました。無効なパラメータがあるリクエストのerrors/codeはINVALID_PARAMETERになります。
| HTTPコード | エラーコード |
|---|---|
| 403 | ACCOUNT_LOCKED_OUT |
| 404 | ACCOUNT_MEDIA_NOT_FOUND |
| 403 | ACCOUNT_NOT_FOUND |
| 403 | ACTION_NOT_ALLOWED |
| 404 | APP_EVENT_PROVIDER_CONFIGURATION_NOT_FOUND |
| 404 | APP_EVENT_TAG_NOT_FOUND |
| 404 | BEHAVIOR_OR_BEHAVIOR_EXPANDED_NOT_FOUND |
| 404 | CAMPAIGN_NOT_FOUND |
| 408 | CANCELLED_REQUEST |
| 404 | CARD_NOT_FOUND |
| 403 | CURRENT_USER_SUSPENDED |
| 400 | DUPLICATE_TWEET |
| 400 | EXCLUSIVE_PARAMETERS |
| 400 | FEATURE_NOT_AVAILABLE |
| 403 | FUNDING_INSTRUMENT_ACCESS_NOT_ALLOWED |
| 403 | FUNDING_INSTRUMENT_EXCEEDS_AVAILABLE_CREDIT_LIMIT |
| 404 | FUNDING_INSTRUMENT_NOT_FOUND |
| 403 | GENERIC_TWEET_ERROR |
| 400 | ILLEGAL_CHARACTERS |
| 400 | INCLUSIVE_PARAMETERS |
| 500 | INTERNAL_ERROR |
| 404 | INVALID_APP_ID |
| 404 | INVALID_APP_STORE |
| 400 | INVALID_DENOMINATION |
| 400 | INVALID_FUNDING_INSTRUMENT |
| 404 | INVALID_IAB_CATEGORY |
| 404 | INVALID_ID_ILLEGAL_CHARACTERS |
| 400 | INVALID_IMAGE |
| 400 | INVALID_MEDIA |
| 400 | INVALID_MEDIA_ID |
| 400 | INVALID_PARAMETER |
| 400 | INVALID_PLACEMENT_TYPE |
| 400 | INVALID_TAILORED_AUDIENCE_TYPE |
| 400 | INVALID_TARGETING_TYPE |
| 400 | INVALID_TIME_WINDOW |
| 400 | INVALID_TV_SHOW_LOCATIONS |
| 400 | INVALID_TWEET |
| 400 | INVALID_USER |
| 400 | INVALID_USER_ID |
| 423 | LOCK_ACQUISITION_TIMEOUT |
| 404 | LINE_ITEM_APP_NOT_FOUND |
| 404 | LINE_ITEM_NOT_FOUND |
| 404 | MACT_APP_NOT_FOUND |
| 403 | MALWARE_STATUS |
| 404 | MEDIA_CREATIVE_NOT_FOUND |
| 404 | MEDIA_NOT_FOUND |
| 405 | METHOD_NOT_ALLOWED |
| 400 | MISSING_PARAMETER |
| 404 | NO_PROVIDER_AVAILABLE_FOR_THIS_CLIENT_APPLICATION |
| 404 | NOT_FOUND |
| 404 | PROMOTABLE_USER_NOT_FOUND |
| 404 | PROMOTED_ACCOUNT_NOT_FOUND |
| 404 | PROMOTED_TWEET_NOT_FOUND |
| 403 | READONLY_CLIENT_APPLICATION |
| 400 | REQUEST_TOO_COMPLEX |
| 404 | ROUTE_NOT_FOUND |
| 503 | SERVICE_UNAVAILABLE |
| 503 | OVER_CAPACITY |
| 400 | SPEND_EXCEEDS_BUDGET |
| 404 | TAILORED_AUDIENCE_CHANGE_FILE_NOT_FOUND |
| 404 | TAILORED_AUDIENCE_NOT_FOUND |
| 404 | TAILORED_AUDIENCE_OR_TAILORED_AUDIENCE_EXPANDED_NOT_FOUND |
| 404 | TARGETING_CRITERION_NOT_FOUND |
| 400 | TOO_MANY_CAMPAIGNS |
| 400 | TOO_MANY_LINE_ITEMS |
| 429 | TOO_MANY_REQUESTS |
| 400 | TV_SHOW_OUTSIDE_MARKET |
| 400 | TWEET_CANNOT_BE_BLANK |
| 403 | TWEET_IS_SPAM |
| 404 | TWEET_NOT_FOUND |
| 429 | TWEET_RATE_LIMIT_EXCEEDED |
| 401 | UNAUTHORIZED_ACCESS |
| 403 | UNAUTHORIZED_CLIENT_APPLICATION |
| 400 | UNKNOWN_CARD_TYPE |
| 400 | UNKNOWN_CRITERIA_TYPE |
| 403 | USER_NOT_FOUND |
| 404 | WEB_EVENT_TAG_NOT_FOUND |