典型响应结构
成功响应通过 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
字段会包含与利用的资源关联的特定对象。响应可能包含一个或多个结果时,data
节点的格式将为 JSON 数组。响应中仅可能包含一个结果时,则将返回为 JSON 哈希。在极为少见的情况下,你可能看到通常包含集合的响应却包含哈希映射。在这种情况下,可假设这个哈希映射是 type
字段中指定的同类型对象。
错误响应结构
错误响应均以非 200 系列 HTTP 代码表示。通常会附上 JSON 响应,但是一些错误将以不同种类的正文响应。在响应结构无法解析的情况下,考虑优先采纳 HTTP 代码的核心含义。例如,你可能偶尔会看到 HTTP 404 伴随 HTML 响应出现。这种情况下,可以认为无法找到内容(HTTP 404 表示“找不到”)。
典型错误响应与成功响应有类似的结构。错误的性质将通过响应的 errors
节点进行传输。errors/code
节点将指示大写的常量错误代码,你可以编程方式使用该代码,从而做出解决决策。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 |