Códigos de error
A continuación se muestran listas de códigos de error de API de REST y una explicación de cómo se devuelven los errores a las aplicaciones.
Gestión y registro de excepciones
Al desarrollar para Marketo, es importante que las solicitudes y respuestas se registren cuando se encuentre una excepción inesperada. Aunque algunos tipos de excepciones, como la autenticación caducada, se pueden controlar de forma segura mediante la reautenticación, otros pueden requerir interacciones de soporte, y las solicitudes y respuestas siempre se solicitarán en este escenario.
Tipos de error
La API de REST de Marketo puede devolver tres tipos diferentes de errores en funcionamiento normal:
- Nivel HTTP: estos errores se indican mediante un código
4xx
. - Response-Level: estos errores se incluyen en la matriz "errors" de la respuesta JSON.
- Nivel de registro: estos errores se incluyen en la matriz "result" de la respuesta JSON y se indican en un registro individual con el campo "estado" y la matriz "motivos".
Para los tipos de error de nivel de respuesta y nivel de registro, se devuelve un código de estado HTTP de 200. Para todos los tipos de error, la frase de motivo HTTP no debe evaluarse porque es opcional y está sujeta a cambios.
Errores de nivel HTTP
En circunstancias normales de funcionamiento, Marketo solo debería devolver dos errores de código de estado HTTP, 413 Request Entity Too Large
y 414 Request URI Too Long
. Ambos se pueden recuperar detectando el error, modificando la solicitud y reintentando, pero con las prácticas de codificación inteligente, nunca debe encontrarlos en el comodín.
Marketo devolverá 413 si la carga de la solicitud supera 1 MB o 10 MB en el caso de la importación de posible cliente. En la mayoría de los casos, es poco probable que se alcancen estos límites, pero añadir una comprobación al tamaño de la solicitud y mover cualquier registro, lo que provoca que se supere el límite a una nueva solicitud, debe evitar cualquier circunstancia, que lleve a que este error sea devuelto por cualquier extremo.
414 se devolverá cuando el URI de una solicitud de GET exceda de 8 KB. Para evitarlo, compare la longitud de la cadena de consulta para ver si supera este límite. Si cambia la solicitud a un método POST, escriba la cadena de consulta como el cuerpo de la solicitud con el parámetro adicional _method=GET
. Esto renuncia a la limitación de URI. Es raro alcanzar este límite en la mayoría de los casos, pero es algo común cuando se recuperan grandes lotes de registros con valores de filtro individuales largos, como un GUID.
El extremo Identity puede devolver un error 401 Unauthorized. Esto suele deberse a un ID de cliente no válido o a un secreto de cliente no válido. Códigos de error de nivel HTTP
Errores de nivel de respuesta
Los errores de nivel de respuesta están presentes cuando el parámetro success
de la respuesta se establece en false y están estructurados de la siguiente manera:
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
Cada objeto de la matriz "errors" tiene dos miembros, code
, que es un entero entre comillas comprendido entre 601 y 799 y un message
que indica el motivo del error en texto sin formato. Los códigos 6xx siempre indican que una solicitud ha fallado completamente y no se ha ejecutado. Un ejemplo es un 601, "Token de acceso no válido", que se puede recuperar volviendo a autenticar y pasando el nuevo token de acceso con la solicitud. Los errores 7xx indican que la solicitud falló, ya sea porque no se devolvieron datos o porque se parametrizó incorrectamente la solicitud, como incluir una fecha no válida o faltar un parámetro requerido.
Códigos de error de nivel de respuesta
Una llamada de API que devuelva este código de respuesta no se contará en su cuota diaria o en su límite de tarifa.
- Se especificó una fecha que no tenía el formato correcto
- Se ha especificado un ID de contenido dinámico no válido
No se puede cumplir la llamada porque infringe un requisito para crear o actualizar un recurso como, por ejemplo, intentar crear un mensaje de correo electrónico sin una plantilla. También es posible obtener este error al intentar lo siguiente:
- Recupere contenido para páginas de aterrizaje que contengan contenido social.
- Clonar un programa que contiene ciertos tipos de recursos (consulte Clonar programa para obtener más información).
- Aprobar un recurso que no tenga borrador (es decir, que ya se haya aprobado).
Nivel de registro record_level_errors
Los errores de nivel de registro indican que no se pudo completar una operación para un registro individual, pero la solicitud en sí era válida. Una respuesta con errores en el nivel de registro sigue este patrón:
Respuesta
{
"requestId":"e42b#14272d07d78",
"success":true,
"result":[
{
"id":50,
"status":"created"
},
{
"id":51,
"status":"created"
},
{
"status":"skipped",
"reasons":[
{
"code":"1005",
"message":"Lead already exists"
}
]
}
]
}
Los registros incluidos en la matriz de llamadas de resultado se ordenan del mismo modo que la matriz de entrada de una solicitud.
Cada registro de una solicitud correcta puede tener éxito o fallar de forma individual, lo que se indica mediante el campo de estado de cada registro incluido en la matriz de resultados de una respuesta. El campo "estado" de estos registros se "omitirá" y aparecerá una matriz "motivos". Cada motivo contiene un miembro "code" y un miembro "message". El código siempre es 1xxx y el mensaje indica por qué se omitió el registro. Un ejemplo sería cuando una solicitud de Sync Leads tiene "action" establecida en "createOnly" pero ya existe un posible cliente para una de las claves de los registros enviados. Este caso devuelve un código de 1005 y un mensaje de "El posible cliente ya existe" como se muestra arriba.