Códigos de erro
Abaixo estão listas de códigos de erro da API REST e uma explicação de como os erros são retornados aos aplicativos.
Tratando e Registrando Exceções
Ao desenvolver para o Marketo, é importante que as solicitações e respostas sejam registradas quando uma exceção inesperada for encontrada. Embora certos tipos de exceções, como autenticação expirada, possam ser manipulados com segurança por meio da reautenticação, outros podem exigir interações de suporte, e as solicitações e respostas sempre serão solicitadas nesse cenário.
Tipos de erro
A API REST do Marketo pode retornar três tipos diferentes de erros em operação normal:
- Nível de HTTP: esses erros são indicados por um código
4xx
. - Nível de resposta: esses erros são incluídos na matriz "erros" da resposta JSON.
- Nível de registro: esses erros são incluídos na matriz "resultado" da resposta JSON e são indicados em uma base de registro individual com o campo "status" e a matriz "motivos".
Para os tipos de erro de Nível de resposta e Nível de registro, um código de status HTTP 200 é retornado. Para todos os tipos de erro, a frase de motivo HTTP não deve ser avaliada, pois é opcional e está sujeita a alterações.
Erros de nível de HTTP
Em circunstâncias normais de operação, o Marketo só deve retornar dois erros de código de status HTTP, 413 Request Entity Too Large
e 414 Request URI Too Long
. Ambos são recuperáveis ao capturar o erro, modificar a solicitação e tentar novamente, mas com práticas de codificação inteligente, você nunca deve encontrá-los na natureza.
O Marketo retornará 413 se a Carga da solicitação exceder 1 MB, ou 10 MB no caso de Lead de importação. Na maioria dos cenários, é improvável atingir esses limites, mas adicionar uma verificação ao tamanho da solicitação e mover quaisquer registros, o que faz com que o limite seja excedido para uma nova solicitação, deve evitar quaisquer circunstâncias, que levam a esse erro ser retornado por quaisquer pontos de extremidade.
414 serão retornados quando o URI de uma solicitação GET exceder 8KB. Para evitá-lo, verifique o comprimento da sua cadeia de caracteres de consulta para ver se ela excede esse limite. Se ele fizer com que sua solicitação seja alterada para um método POST, insira sua cadeia de caracteres de consulta como o corpo da solicitação com o parâmetro adicional _method=GET
. Isso abre mão da limitação nos URIs. É raro atingir esse limite na maioria dos casos, mas é um pouco comum ao recuperar grandes lotes de registros com valores de filtro individuais longos, como uma GUID.
O ponto de extremidade Identidade pode retornar um erro 401 Não Autorizado. Normalmente, isso se deve a uma ID de cliente inválida ou a um Segredo do cliente inválido. Códigos de erro de nível HTTP
Erros de nível de resposta
Erros de nível de resposta estão presentes quando o parâmetro success
da resposta é definido como false, e são estruturados como:
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
Cada objeto na matriz "errors" tem dois membros, code
, que é um inteiro entre aspas de 601 a 799 e um message
que fornece a razão do texto sem formatação para o erro. Os códigos 6xx sempre indicam que uma solicitação falhou completamente e não foi executada. Um exemplo é um 601, "Token de acesso inválido", que pode ser recuperado através da reautenticação e transmissão do novo token de acesso com a solicitação. Os erros 7xx indicam que a solicitação falhou, seja porque nenhum dado foi retornado ou porque a solicitação foi parametrizada incorretamente, como a inclusão de uma data inválida ou a ausência de um parâmetro obrigatório.
Códigos de erro de nível de resposta
Uma chamada de API que retorna esse código de resposta não é contabilizada em relação à sua cota diária ou ao seu limite de taxa.
- Foi especificada uma data que não estava no formato correto
- Uma ID de conteúdo dinâmico inválida foi especificada
A chamada não pode ser atendida porque viola um requisito para criar ou atualizar um ativo, por exemplo, tentar criar um email sem um modelo. Também é possível obter esse erro ao tentar:
- Recupere conteúdo para páginas de aterrissagem que contenham conteúdo social.
- Clonar um programa que contenha determinados tipos de ativos (consulte Clonar programa para obter mais informações).
- Aprovar um ativo que não tem rascunho (ou seja, já foi aprovado).
Nível de registro record_level_errors
Os erros no nível do registro indicam que não foi possível concluir uma operação para um registro individual, mas a própria solicitação era válida. Uma resposta com erros de nível de registro segue este padrão:
Resposta
{
"requestId":"e42b#14272d07d78",
"success":true,
"result":[
{
"id":50,
"status":"created"
},
{
"id":51,
"status":"created"
},
{
"status":"skipped",
"reasons":[
{
"code":"1005",
"message":"Lead already exists"
}
]
}
]
}
Os registros incluídos na matriz de resultados das chamadas são ordenados da mesma forma que a matriz de entrada de uma solicitação.
Cada registro em uma solicitação bem-sucedida pode ter êxito ou falha individualmente, o que é indicado pelo campo de status de cada registro incluído na matriz de resultados de uma resposta. O campo "status" desses registros será "ignorado" e uma matriz "reason" estará presente. Cada motivo contém um membro "código" e um membro "mensagem". O código é sempre 1xxx e a mensagem indica por que o registro foi ignorado. Um exemplo seria quando uma solicitação Sincronizar clientes em potencial tem "ação" definida como "createOnly", mas já existe um cliente em potencial para uma das chaves nos registros enviados. Esse caso retorna um código 1005 e uma mensagem de "Lead já existe" conforme exibido acima.