오류 코드
다음은 REST API 오류 코드 목록과 오류가 다시 애플리케이션으로 반환되는 방법에 대한 설명입니다.
예외 처리 및 로깅
Marketo용으로 개발할 때 예기치 않은 예외가 발생할 때 요청 및 응답이 기록되는 것이 중요합니다. 만료된 인증과 같은 특정 유형의 예외는 재인증을 통해 안전하게 처리할 수 있지만 다른 예외는 지원 상호 작용이 필요할 수 있으며 이 시나리오에서는 항상 요청 및 응답이 요청됩니다.
오류 유형
Marketo REST API는 일반 작업 시 세 가지 유형의 오류를 반환할 수 있습니다.
- HTTP 수준: 이러한 오류는
4xx
코드로 표시됩니다. - 응답 수준: 이러한 오류는 JSON 응답의 "오류" 배열에 포함됩니다.
- 레코드 수준: 이러한 오류는 JSON 응답의 "result" 배열에 포함되며 "status" 필드 및 "reasons" 배열과 함께 개별 레코드 단위로 표시됩니다.
응답 수준 및 레코드 수준 오류 유형의 경우 HTTP 상태 코드 200이 반환됩니다. 모든 오류 유형의 경우 HTTP 이유 구는 선택 사항이며 변경될 수 있으므로 평가해서는 안 됩니다.
HTTP 수준 오류
일반적인 운영 환경에서는 Marketo이 HTTP 상태 코드 오류 413 Request Entity Too Large
및 414 Request URI Too Long
만 반환해야 합니다. 이러한 기능은 모두 오류를 추적하고, 요청을 수정하고, 다시 시도하는 것을 통해 복구할 수 있지만, 스마트 코딩 사례를 사용하면 이러한 기능이 야생에서 발생하지 않아야 합니다.
Marketo은 요청 페이로드가 1MB를 초과하는 경우 413, 리드 가져오기의 경우 10MB를 반환합니다. 대부분의 시나리오에서는 이러한 제한에 도달할 가능성이 낮지만 요청 크기에 대한 검사를 추가하고 레코드를 이동하면 제한이 새 요청으로 초과되어 종단점에서 이 오류가 반환되는 상황을 방지해야 합니다.
GET 요청의 URI가 8KB를 초과하면 414가 반환됩니다. 이를 방지하려면 쿼리 문자열의 길이를 확인하여 이 제한을 초과하는지 확인하십시오. 요청이 POST 메서드로 변경되면 쿼리 문자열을 추가 매개 변수 _method=GET
과(와) 함께 요청 본문으로 입력합니다. URI에 대한 제한을 무시합니다. 대부분의 경우 이 제한에 도달하는 것은 드물지만 GUID와 같은 긴 개별 필터 값이 있는 큰 레코드 일괄 처리를 검색하는 경우에는 다소 일반적입니다.
ID 끝점은 승인되지 않은 401 오류를 반환할 수 있습니다. 이는 일반적으로 잘못된 클라이언트 ID 또는 잘못된 클라이언트 암호 때문입니다. HTTP 수준 오류 코드
응답 수준 오류
응답의 success
매개 변수가 false로 설정되어 있으면 응답 수준 오류가 표시되며 다음과 같이 구성됩니다.
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
"errors" 배열의 각 개체에는 두 개의 멤버 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"
}
]
}
]
}
호출 결과 배열에 포함된 레코드는 요청의 입력 배열과 동일한 방식으로 정렬됩니다.
성공적인 요청의 각 레코드는 개별적으로 성공하거나 실패할 수 있으며, 이는 응답의 결과 배열에 포함된 각 레코드의 상태 필드에 의해 표시됩니다. 이러한 레코드의 "상태" 필드는 "생략"되며 "이유" 배열이 있습니다. 각 이유에는 "code" 멤버와 "message" 멤버가 포함되어 있습니다. 코드는 항상 1xxx이며 메시지는 레코드가 생략된 이유를 나타냅니다. 예를 들어 동기화 리드 요청에 "action"이 "createOnly"로 설정되어 있지만 제출된 레코드의 키 중 하나에 대한 리드가 이미 있는 경우가 있습니다. 이 경우 코드 1005를 반환하며 위에 표시된 대로 "Lead 가 이미 존재합니다" 라는 메시지를 반환합니다.
레코드 수준 오류 코드
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 37-row-3 html-authored no-header | ||
---|---|---|
응답 코드 | 설명 | 댓글 |
1001 | 값 '%s'이(가) 잘못되었습니다. '%s' 유형의 필수 항목 | 매개 변수 값에 형식이 일치하지 않을 때마다 오류가 발생합니다. 예를 들어 정수 매개 변수에 대해 지정된 문자열 값입니다. |
1002 | 필수 매개 변수 '%s'에 대한 값이 없습니다. | 요청에서 필수 매개 변수가 누락되면 오류가 생성됩니다. |
1003 | 잘못된 데이터 | 작업이 createOnly로 지정된 잠재 고객에 대해 ID가 제출되거나 배치 캠페인에서 요청 캠페인을 사용할 때와 같이 제출된 데이터가 지정된 엔드포인트 또는 모드에 대해 유효한 유형이 아닌 경우. |
1004 | 리드를 찾을 수 없음 | syncLead 의 경우 작업이 "updateOnly"이고 lead 를 찾을 수 없는 경우 |
1005 | 리드가 이미 있음 | syncLead 의 경우 작업이 "createOnly"이고 잠재 고객이 이미 있는 경우 |
1006 | '%s' 필드를 찾을 수 없습니다. | 호출에 포함된 필드가 올바른 필드가 아닙니다. |
1007 | 여러 잠재 고객이 조회 기준과 일치함 | 여러 잠재 고객이 조회 기준과 일치합니다. 키가 단일 레코드와 일치하는 경우에만 업데이트를 수행할 수 있습니다. |
1008 | '%s' 파티션에 대한 액세스가 거부되었습니다. | 사용자 정의 서비스의 사용자는 레코드가 존재하는 파티션이 있는 작업 영역에 액세스할 수 없습니다. |
1009 | 파티션 이름을 지정해야 합니다. | |
1010 | 파티션 업데이트가 허용되지 않음 | 지정한 레코드가 별도의 잠재 고객 파티션에 이미 있습니다. |
1011 | '%s' 필드는 지원되지 않습니다. | 조회 필드 또는 'filterType'이 지원되지 않는 표준 필드로 지정된 경우(예: firstName, lastName) |
1012 | 잘못된 쿠키 값 '%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 | 지원되지 않는 필터 유형 | 일부 구독에서는 updateAt, smartListId, smartListName과 같은 대량 리드 추출 필터 유형이 지원되지 않습니다. |
1036 | 입력에서 중복 개체가 발견되었습니다. | 동일한 외래 키를 사용하여 두 개 이상의 레코드를 업데이트하라는 호출이 발생했습니다. 예를 들어 동기화 회사는 둘 이상의 회사에 대해 동일한 externalCompanyId를 사용하여 를 호출합니다. |
1037 | 잠재 고객 건너뜀 | 이미 이 상태 또는 그 이후이므로 잠재 고객을 건너뛰었습니다. |
1042 | 잘못된 runAt 날짜 | 일정 캠페인에 대해 지정된 runAt 날짜가 너무 먼 미래입니다(최대 2년). |
1048 | 사용자 지정 개체 초안 삭제 실패 | 사용자 지정 개체의 초안 버전을 삭제하라는 호출이 수행되었습니다. |
1049 | 활동을 만들지 못했습니다. | 특성 배열이 너무 깁니다. 레코드에 전달된 특성의 배열이 최대 길이(65536바이트)를 초과했습니다. |
1076 | mergeInCRM 플래그가 있는 잠재 고객 병합 호출은 4입니다. | 중복 레코드를 만들고 있습니다. 기존 레코드를 대신 사용하는 것이 좋습니다. Salesforce에서 병합할 때 Marketo에서 수신하는 오류 메시지입니다. |
1077 | 'SFDC 필드' 길이로 인해 리드 병합 호출이 실패했습니다. | 'SFDC 필드'가 허용된 문자 제한을 초과하여 mergeInCRM이 true로 설정된 병합 리드 호출이 실패했습니다. 수정하려면 'SFDC 필드'의 길이를 줄이거나 mergeInCRM을 false로 설정하십시오. |
1078 | 잠재 고객/연락처가 아닌 삭제된 엔터티로 인해 잠재 고객 병합 호출에 실패했습니다. 또는 필드 필터 기준이 일치하지 않습니다. | 병합 실패, 고유하게 동기화된 CRM에서 병합 작업을 수행할 수 없음 Salesforce에서 병합할 때 Marketo에서 수신하는 오류 메시지입니다. |
1079 | 중복 레코드의 개인화된 URL 충돌로 인해 리드 병합 호출이 실패했습니다. | 병합 리드 호출에서 동일한 개인화된 URL을 사용하는 여러 리드를 지정했습니다. 해결하려면 Marketo Engage 사용자 인터페이스를 사용하여 이러한 레코드를 병합합니다. |