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.
O 414 será retornado 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 isso 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.
Códigos de erro de nível de registro
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 | ||
---|---|---|
Código de resposta | Descrição | Comentário |
1001 | Valor inválido ‘%s’. Obrigatório do tipo ‘%s’ | O erro é gerado sempre que um valor de parâmetro tem uma incompatibilidade de tipo. Por exemplo, o valor da string especificado para um parâmetro inteiro. |
1002 | Valor ausente para o parâmetro obrigatório ‘%s’ | O erro é gerado quando um parâmetro obrigatório está ausente na solicitação |
1003 | Dados inválidos | Quando os dados enviados não são de um tipo válido para o endpoint ou modo especificado, como quando a ID é enviada para um cliente potencial com a ação designada como createOnly ou ao usar a Campanha de solicitação em uma campanha em lote. |
1004 | Lead não encontrado | Para syncLead, quando a ação for "updateOnly" e se o lead não for encontrado |
1005 | O cliente em potencial já existe | Para syncLead, quando a ação for "createOnly" e um lead já existir |
1006 | Campo ‘%s’ não encontrado | Um campo incluído na chamada não é válido. |
1007 | Vários leads correspondem aos critérios de pesquisa | Vários clientes em potencial correspondem aos critérios de pesquisa. As atualizações só podem ser executadas quando a chave corresponde a um único registro |
1008 | Acesso negado à partição ‘%s’ | O usuário do serviço personalizado não tem acesso a um espaço de trabalho com a partição em que o registro existe. |
1009 | O nome da partição deve ser especificado | |
1010 | Atualização de partição não permitida | O registro especificado já existe em uma partição de cliente potencial separada. |
1011 | O campo ‘%s’ não é suportado | Quando o campo de pesquisa ou "filterType" é especificado com campos padrão sem suporte (por exemplo: firstName, lastName) |
1012 | Valor de cookie inválido ‘%s’ | Pode ocorrer ao chamar o Associar lead com um valor inválido para o parâmetro "cookie". Isso também ocorre ao chamar Obter clientes em potencial por Tipo de filtro com "filterType=cookies" e um valor inválido para o parâmetro "filterValues". |
1013 | Objeto não encontrado | Obter objeto (lista, campanha) por id retorna este código de erro |
1014 | Falha ao criar objeto | Falha ao criar objeto (lista) |
1015 | Cliente em potencial não está na lista | O cliente em potencial designado não é um membro da lista de público alvo |
1016 | Muitas importações | Há muitas importações na fila. Um máximo de 10 é permitido |
1017 | O objeto já existe | Falha na criação porque o registro já existe |
1018 | CRM Habilitado | A ação não pôde ser executada porque a instância tem uma integração nativa do CRM habilitada. |
1019 | Importação em andamento | A lista de destino já está sendo importada para |
1020 | Muitos clones para o programa | A assinatura atingiu o uso alocado de "cloneToProgramName" no Programa de agendamento para o dia |
1021 | Atualização de empresa não permitida | Atualização da empresa não permitida durante syncLead |
1022 | Objeto em uso | A exclusão não é permitida quando um objeto está em uso por outro objeto |
1025 | Status do programa não encontrado | Foi especificado um status para Alterar o status do programa de cliente potencial que não corresponde a um status disponível para o canal do programa. |
1026 | Objeto personalizado não habilitado | A ação não pôde ser executada, pois a instância não tem a integração de objetos personalizados habilitada. |
1027 | Limite máximo de tipos de atividade atingido | A assinatura atingiu o número máximo de tipos de atividades personalizadas disponíveis. |
1028 | Limite máximo de campos atingido | As atividades personalizadas têm no máximo 20 atributos secundários. |
1029 |
|
|
1035 | Tipo de filtro incompatível | Em algumas assinaturas, os seguintes tipos de filtro de Extração de lead em massa não são compatíveis: updatedAt, smartListId, smartListName. |
1036 | Objeto duplicado encontrado na entrada | Foi feita uma chamada para atualizar dois ou mais registros usando a mesma chave estrangeira. Por exemplo, uma chamada de Empresas de sincronização usando a mesma externalCompanyId para mais de uma empresa. |
1037 | O lead foi ignorado | O cliente em potencial foi ignorado porque já está neste status ou já passou dele. |
1042 | Data runAt inválida | A data runAt especificada para o Schedule Campaign estava muito distante no futuro (o máximo é 2 anos). |
1048 | Falha ao descartar rascunho de objeto personalizado | Foi feita uma chamada para descartar a versão de rascunho de um objeto personalizado. |
1049 | Falha ao criar atividade | Matriz de atributos muito longa. A matriz de atributos passada para o registro excedeu o comprimento máximo de 65.536 bytes |
1076 | A chamada Mesclar clientes em potencial com o sinalizador mergeInCRM é 4. | Você está criando um registro duplicado. É recomendável usar um registro existente. Essa é a mensagem de erro, que o Marketo recebe ao mesclar no Salesforce. |
1077 | A chamada Mesclar clientes em potencial falhou devido ao comprimento do "Campo SFDC" | Uma chamada de Mesclagem de leads com mergeInCRM definido como true falhou porque o "Campo SFDC" excede o limite de caracteres permitidos. Para corrigir, reduza o comprimento de "SFDC Field" ou defina mergeInCRM como false. |
1078 | A chamada Mesclar clientes em potencial falhou devido à entidade excluída, não a um cliente potencial/contato ou a critérios de filtro de campo não correspondem. | Falha na mesclagem; não é possível executar a operação de mesclagem no CRM sincronizado nativamente Essa é a mensagem de erro, que o Marketo recebe ao mesclar no Salesforce. |
1079 | A chamada Mesclar clientes em potencial falhou devido ao conflito de URL personalizado em registros duplicados | Uma chamada de Mesclar leads especificou muitos leads com a mesma URL personalizada. Para resolver, use a interface do usuário do Marketo Engage para mesclar esses registros. |