錯誤代碼
以下是REST API錯誤碼清單,並說明如何將錯誤傳回至應用程式。
處理與記錄例外
針對Marketo進行開發時,發生非預期的例外狀況時,請務必記錄請求和回應。 雖然重新驗證可以安全地處理某些型別的例外(例如過期的驗證),但其他例外可能需要支援互動,而在此情況下將一律要求請求和回應。
錯誤型別
Marketo REST API在正常操作下可傳回三種不同型別的錯誤:
- HTTP-Level:這些錯誤以
4xx
程式碼表示。 - 回應層級:這些錯誤包含在JSON回應的「錯誤」陣列中。
- 記錄層級:這些錯誤包含在JSON回應的「結果」陣列中,並以「狀態」欄位和「原因」陣列依個別記錄指示。
對於回應層級和記錄層級錯誤型別,會傳回HTTP狀態碼200。 對於所有錯誤型別,不應評估HTTP原因片語,因為它是選用且可能會變更。
HTTP層級錯誤
在正常作業情況下,Marketo應該只傳回兩個HTTP狀態程式碼錯誤: 413 Request Entity Too Large
和414 Request URI Too Long
。 擷取錯誤、修改請求和重試都可以復原這些設定,但使用智慧編碼實務作法,您絕不應該在萬不得已的情況下遇到這些設定。
如果要求裝載超過1MB,Marketo會傳回413,若是Import Lead,會傳回10MB。 在大多數情況下,應該不會達到這些限制,但新增檢查至要求的大小,並移動任何記錄(這會導致限制超過新的要求)應該可以防止任何情況(這會導致任何端點傳回此錯誤)。
當GET要求的URI超過8KB時,將會傳回414。 若要避免出現這種情況,請檢查查詢字串的長度,看看是否超過此限制。 如果它確實將您的要求變更為POST方法,則使用其他引數_method=GET
將您的查詢字串輸入為要求內文。 這放棄了URI的限制。 在大多數情況下很少達到此限制,但在擷取具有長的個別篩選值(例如GUID)的大量記錄時,這比較常見。
身分端點可能傳回401未授權錯誤。 這通常是因為無效的使用者端ID或無效的使用者端密碼。 HTTP層級錯誤代碼
回應層級錯誤
當回應的success
引數設為false,且結構如下列時,會出現回應層級錯誤:
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
「錯誤」陣列中的每個物件都有兩個成員,code
,這是從601到799的引號整數,以及提供錯誤純文字原因的message
。 6xx程式碼一律會指出要求完全失敗且未執行。 601「存取權杖無效」即是範例,您可使用要求重新驗證並傳遞新的存取權杖來復原它。 7xx錯誤表示請求失敗,可能是因為未傳回任何資料,或是請求引數化不正確,例如包含無效的日期,或遺漏必要的引數。
回應層級錯誤代碼
傳回此回應程式碼的API呼叫不會算入您的每日配額或速率限制中。
無法完成呼叫,因為它違反了建立或更新資產的要求,例如,嘗試在沒有範本的情況下建立電子郵件。 嘗試下列動作時,也可能發生此錯誤:
- 擷取包含社交內容的登入頁面內容。
- 複製包含特定資產型別的程式(如需詳細資訊,請參閱程式複製)。
- 核准沒有草稿的資產(即已核准)。
記錄層級 record_level_errors
記錄層級錯誤表示無法完成個別記錄的作業,但要求本身有效。 含有記錄層級錯誤的回應會遵循以下模式:
回應
{
"requestId":"e42b#14272d07d78",
"success":true,
"result":[
{
"id":50,
"status":"created"
},
{
"id":51,
"status":"created"
},
{
"status":"skipped",
"reasons":[
{
"code":"1005",
"message":"Lead already exists"
}
]
}
]
}
呼叫結果陣列中包含的記錄排序方式,與請求的輸入陣列相同。
成功請求中的每個記錄都可能依個別情況成功或失敗,由回應結果陣列中所包含每個記錄的狀態列位表示。 這些記錄的「狀態」欄位將「略過」,且會出現「原因」陣列。 每個原因都包含「代碼」成員和「訊息」成員。 程式碼一律為1xxx,而訊息會指出略過記錄的原因。 例如,Sync Leads請求的「action」設為「createOnly」,但已提交記錄中的索引鍵之一已有潛在客戶。 此案例會傳回代碼1005,而如上所示,訊息為「潛在客戶已存在」。
記錄層級錯誤代碼
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3 9-row-3 10-row-3 11-row-3 12-row-3 13-row-3 14-row-3 15-row-3 16-row-3 17-row-3 18-row-3 19-row-3 20-row-3 21-row-3 22-row-3 23-row-3 24-row-3 25-row-3 26-row-3 27-row-3 28-row-3 29-row-3 30-row-3 31-row-3 32-row-3 33-row-3 34-row-3 35-row-3 36-row-3 html-authored no-header | ||
---|---|---|
回應代碼 | 說明 | 註解 |
1001 | 無效的值'%s'。 需要'%s'型別 | 每當引數值的型別不符時,就會產生錯誤。 例如,為integer引數指定的字串值。 |
1002 | 遺失必要引數'%s'的值 | 請求中缺少必要引數時會產生錯誤 |
1003 | 無效的資料 | 當提交的資料不是指定端點或模式的有效型別時;例如當使用指定為createOnly的動作提交潛在客戶的ID時,或當在批次促銷活動上使用請求促銷活動時。 |
1004 | 找不到銷售機會 | 對於syncLead,當動作為"updateOnly"且找不到潛在客戶時 |
1005 | 潛在客戶已存在 | 對於syncLead,當動作為"createOnly"且潛在客戶已存在時 |
1006 | 找不到欄位'%s' | 呼叫中包含的欄位不是有效欄位。 |
1007 | 多個銷售機會符合查詢條件 | 有多個銷售機會符合查詢條件。 僅當索引鍵符合單一記錄時才能執行更新 |
1008 | 拒絕存取資料分割'%s' | 自訂服務的使用者無法存取含有記錄所在資料分割的工作區。 |
1009 | 必須指定資料分割名稱 | |
1010 | 不允許資料分割更新 | 指定的記錄已經存在於不同的潛在客戶分割中。 |
1011 | 欄位'%s'不受支援 | 當查閱欄位或以不支援的標準欄位指定的「filterType」時(例如:firstName、lastName) |
1012 | 無效的Cookie值'%s' | 呼叫關聯銷售機會時,可能會發生'cookie'引數的無效值。 當使用'filterType=cookies'並有'filterValues'引數的無效值依篩選型別呼叫取得銷售機會時,也會發生這種情況。 |
1013 | 找不到物件 | 依ID取得物件(清單、促銷活動)會傳回此錯誤代碼 |
1014 | 無法建立物件 | 建立物件(清單)失敗 |
1015 | 潛在客戶不在清單中 | 指定的潛在客戶不是目標清單的成員 |
1016 | 匯入次數過多 | 有太多匯入已排入佇列。 最多允許10個 |
1017 | 物件已存在 | 建立失敗,因為記錄已經存在 |
1018 | CRM已啟用 | 無法執行動作,因為執行個體已啟用原生CRM整合。 |
1019 | 匯入進行中 | 目標清單已匯入 |
1020 | 要程式化的翻制專案太多 | 訂閱已達當天排程程式中的「cloneToProgramName」使用配額 |
1021 | 不允許公司更新 | 在syncLead期間不允許公司更新 |
1022 | 使用中的物件 | 當物件正由另一個物件使用時,不允許刪除 |
1025 | 找不到程式狀態 | 已為「變更銷售機會計畫狀態」指定狀態,但該狀態不符合計畫頻道可用的狀態。 |
1026 | 未啟用自訂物件 | 無法執行動作,因為執行個體未啟用自訂物件整合。 |
1027 | 已達到最大活動型別限制 | 訂閱已達到可用自訂活動型別的最大數量。 |
1028 | 已達到最大欄位限制 | 自訂活動最多有20個次要屬性。 |
1029 |
|
|
1035 | 不支援的篩選器型別 | 在某些訂閱中,不支援下列大量銷售機會擷取篩選器型別: updatedAt、smartListId、smartListName。 |
1036 | 在輸入中發現重複的物件 | 已呼叫使用相同的外部索引鍵更新兩個或多個記錄。 例如,同步公司呼叫時,多個公司使用相同的externalCompanyId。 |
1037 | 已略過銷售機會 | 已略過Lead,因為它已經處於或超過此狀態。 |
1042 | 無效的runAt日期 | 為排程行銷活動指定的runAt日期太久未來(最多兩年)。 |
1048 | 自訂物件捨棄草稿失敗 | 已進行呼叫以捨棄自訂物件的草稿版本。 |
1049 | 建立活動失敗 | 屬性陣列太長。 傳遞至記錄的屬性陣列超過65536個位元組的最大長度 |
1076 | 具有mergeInCRM旗標的合併銷售機會呼叫為4。 | 您正在建立重複記錄。 建議您改用現有記錄。 這是Marketo在Salesforce中合併時收到的錯誤訊息。 |
1077 | 由於「SFDC欄位」長度,合併銷售機會呼叫失敗 | mergeInCRM設為true的合併潛在客戶呼叫失敗,因為「SFDC欄位」超過允許的字元限制。 若要更正,請縮短「SFDC欄位」的長度,或將mergeInCRM設為false。 |
1078 | 合併銷售機會呼叫失敗,因為實體已刪除,不是銷售機會/連絡人,或欄位篩選條件不符。 | 合併失敗,無法在原生同步的CRM中執行合併操作 這是Marketo在Salesforce中合併時收到的錯誤訊息。 |