Codici errore
Di seguito sono riportati gli elenchi dei codici di errore REST API e una spiegazione di come gli errori vengono restituiti alle applicazioni.
Gestione e registrazione delle eccezioni
Durante lo sviluppo per Marketo, è importante che le richieste e le risposte vengano registrate quando si verifica un’eccezione imprevista. Mentre alcuni tipi di eccezioni, ad esempio l’autenticazione scaduta, possono essere gestiti in modo sicuro tramite la riautenticazione, altri possono richiedere interazioni di supporto e in questo caso le richieste e le risposte verranno sempre richieste.
Tipi di errore
L’API REST di Marketo può restituire tre diversi tipi di errori in condizioni operative normali:
- Livello HTTP: questi errori sono indicati da un codice
4xx
. - Response-Level: questi errori sono inclusi nell’array "errors" della risposta JSON.
- Record-Level: questi errori sono inclusi nell’array "result" della risposta JSON e sono indicati su base record individuale con il campo "status" e l’array "reason".
Per i tipi di errore a livello di risposta e di record, viene restituito il codice di stato HTTP 200. Per tutti i tipi di errore, la frase relativa al motivo HTTP non deve essere valutata in quanto è facoltativa e soggetta a modifiche.
Errori a livello HTTP
In circostanze operative normali, Marketo dovrebbe restituire solo due errori del codice di stato HTTP, 413 Request Entity Too Large
e 414 Request URI Too Long
. Entrambi possono essere recuperati recuperando l’errore, modificando la richiesta e riprovando, ma con le pratiche di codifica intelligente non dovresti mai incontrarli in modo selvaggio.
Marketo restituirà 413 se il payload della richiesta supera 1 MB, o 10 MB in caso di lead di importazione. Nella maggior parte degli scenari è improbabile che questi limiti vengano raggiunti, ma l’aggiunta di un controllo alle dimensioni della richiesta e lo spostamento di eventuali record, che causano il superamento del limite a una nuova richiesta, dovrebbe evitare qualsiasi circostanza che porti alla restituzione di questo errore da parte di qualsiasi endpoint.
Verrà restituito 414 quando l’URI di una richiesta GET supera gli 8 KB. Per evitarlo, confrontalo con la lunghezza della stringa di query per vedere se supera questo limite. Se la richiesta viene modificata in un metodo POST, immettere la stringa di query come corpo della richiesta con il parametro aggiuntivo _method=GET
. In questo modo viene superata la limitazione sugli URI. È raro che questo limite venga raggiunto nella maggior parte dei casi, ma è piuttosto comune quando si recuperano grandi batch di record con valori di filtro singoli lunghi, ad esempio un GUID.
L'endpoint Identity può restituire un errore 401 Unauthorized. Ciò è in genere dovuto a un ID client non valido o a un segreto client non valido. Codici di errore a livello HTTP
Errori a livello di risposta
Gli errori a livello di risposta sono presenti quando il parametro success
della risposta è impostato su false e sono strutturati nel modo seguente:
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
Ogni oggetto nell'array "errors" ha due membri, code
, che è un numero intero tra 601 e 799 e un message
che fornisce il motivo plaintext dell'errore. I codici 6xx indicano sempre che una richiesta non è riuscita completamente e non è stata eseguita. Un esempio è un 601, "Token di accesso non valido", che è recuperabile autenticando nuovamente e passando il nuovo token di accesso con la richiesta. Gli errori 7xx indicano che la richiesta non è riuscita perché non sono stati restituiti dati o perché la richiesta non era parametrizzata correttamente, ad esempio includendo una data non valida o mancando un parametro obbligatorio.
Codici di errore a livello di risposta
Una chiamata API che restituisce questo codice di risposta non viene conteggiata rispetto alla quota giornaliera o al limite di tariffa.
- È stata specificata una data con formato non corretto
- È stato specificato un ID di contenuto dinamico non valido
La chiamata non può essere soddisfatta perché viola il requisito di creare o aggiornare una risorsa, ad esempio se si tenta di creare un messaggio e-mail senza un modello. È inoltre possibile ricevere questo errore quando si tenta di:
- Recupera il contenuto per le pagine di destinazione che contengono contenuti social.
- Clona un programma che contiene alcuni tipi di risorse (vedi Clone programma per ulteriori informazioni).
- Approva una risorsa senza bozza (cioè che è già stata approvata).
Record-Level record_level_errors
Gli errori a livello di record indicano che non è stato possibile completare un'operazione per un singolo record, ma la richiesta stessa era valida. Una risposta con errori a livello di record segue questo schema:
Risposta
{
"requestId":"e42b#14272d07d78",
"success":true,
"result":[
{
"id":50,
"status":"created"
},
{
"id":51,
"status":"created"
},
{
"status":"skipped",
"reasons":[
{
"code":"1005",
"message":"Lead already exists"
}
]
}
]
}
I record inclusi nell’array di risultati delle chiamate vengono ordinati nello stesso modo dell’array di input di una richiesta.
Ogni record in una richiesta corretta può avere esito positivo o negativo su base individuale, indicato dal campo di stato di ogni record incluso nella matrice dei risultati di una risposta. Il campo "status" di questi record verrà "ignorato" ed è presente un array "reason". Ogni motivo contiene un membro "code" e un membro "message". Il codice è sempre 1xxx e il messaggio indica il motivo per cui il record è stato ignorato. Un esempio potrebbe essere un caso in cui una richiesta di sincronizzazione dei lead ha "action" impostato su "createOnly", ma esiste già un lead per una delle chiavi nei record inviati. Questo caso restituisce il codice 1005 e un messaggio di "Lead esiste già" come mostrato sopra.
Codici di errore a livello di record
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 | ||
---|---|---|
Codice di risposta | Descrizione | Commento |
1001 | Valore '%s' non valido. Richiesto di tipo "%s" | Viene generato un errore ogni volta che un valore di parametro presenta un tipo non corrispondente. Ad esempio, il valore stringa specificato per un parametro intero. |
1002 | Valore mancante per il parametro obbligatorio '%s' | Viene generato un errore quando manca un parametro obbligatorio nella richiesta |
1003 | Dati non validi | Quando i dati inviati non sono un tipo valido per l’endpoint o la modalità specificati, ad esempio quando l’ID viene inviato per un lead con azione designata come createOnly o quando si utilizza Request Campaign su una campagna batch. |
1004 | Lead non trovato | Per syncLead, quando l'azione è "updateOnly" e se il lead non viene trovato |
1005 | Il lead esiste già | Per syncLead, quando action è "createOnly" e se un lead esiste già |
1006 | Campo '%s' non trovato | Un campo incluso nella chiamata non è valido. |
1007 | Più lead corrispondono ai criteri di ricerca | Più lead corrispondono ai criteri di ricerca. È possibile eseguire aggiornamenti solo quando la chiave corrisponde a un singolo record |
1008 | Accesso negato alla partizione '%s' | L'utente del servizio personalizzato non ha accesso a un'area di lavoro con la partizione in cui esiste il record. |
1009 | È necessario specificare il nome della partizione | |
1010 | Aggiornamento della partizione non consentito | Il record specificato esiste già in una partizione lead separata. |
1011 | Campo '%s' non supportato | Quando il campo di ricerca o "filterType" è specificato con campi standard non supportati (ad esempio: firstName, lastName) |
1012 | Valore cookie '%s' non valido | Può verificarsi quando si chiama Associa lead con un valore non valido per il parametro 'cookie'. Ciò si verifica anche quando si chiamano Get Leads by Filter Type con "filterType=cookies" e un valore non valido per il parametro "filterValues". |
1013 | Oggetto non trovato | Ottieni oggetto (elenco, campagna) per ID restituisce questo codice di errore |
1014 | Impossibile creare l'oggetto | Impossibile creare l'oggetto (elenco) |
1015 | Lead non nell’elenco | Il lead designato non è un membro dell'elenco di destinazione |
1016 | Troppe importazioni | Troppe importazioni in coda. È consentito un massimo di 10 |
1017 | L’oggetto esiste già | Creazione non riuscita perché il record esiste già |
1018 | CRM abilitato | Impossibile eseguire l'azione perché per l'istanza è abilitata un'integrazione CRM nativa. |
1019 | Importazione in corso | L’elenco di destinazione è già in fase di importazione in |
1020 | Troppi cloni da programmare | L’abbonamento ha raggiunto l’uso assegnato di "cloneToProgramName" nel programma di pianificazione della giornata |
1021 | Aggiornamento della società non consentito | Aggiornamento società non consentito durante syncLead |
1022 | Oggetto in uso | Eliminazione non consentita quando un oggetto è utilizzato da un altro oggetto |
1025 | Stato del programma non trovato | È stato specificato uno stato per cambiare lo stato del programma lead che non corrisponde a uno stato disponibile per il canale del programma. |
1026 | Oggetto personalizzato non abilitato | Impossibile eseguire l'azione perché per l'istanza non è abilitata l'integrazione di oggetti personalizzati. |
1027 | Limite massimo tipi di attività raggiunto | L’abbonamento ha raggiunto il numero massimo di tipi di attività personalizzati disponibili. |
1028 | È stato raggiunto il limite massimo di campi | Le attività personalizzate hanno un massimo di 20 attributi secondari. |
1029 |
|
|
1035 | Tipo di filtro non supportato | In alcune sottoscrizioni, i seguenti tipi di filtro Estrazione lead bulk non sono supportati: updateAt, smartListId, smartListName. |
1036 | Oggetto duplicato trovato nell'input | È stata effettuata una chiamata per aggiornare due o più record utilizzando la stessa chiave esterna. Ad esempio, una chiamata Sync Companies che utilizza lo stesso externalCompanyId per più società. |
1037 | Il lead è stato saltato | Il lead è stato ignorato perché si trova già in o oltre questo stato. |
1042 | Data runAt non valida | La data runAt specificata per Schedule Campaign era troppo lontana nel futuro (il massimo è 2 anni). |
1048 | Eliminazione bozza oggetto personalizzato non riuscita | È stata effettuata una chiamata per scartare la versione bozza di un oggetto personalizzato. |
1049 | Impossibile creare l'attività | Matrice di attributi troppo lunga. La matrice di attributi passati al record supera la lunghezza massima di 65536 byte |
1076 | La chiamata Unisci lead con il flag mergeInCRM è 4. | Si sta creando un record duplicato. In alternativa, è consigliabile utilizzare un record esistente. Questo è il messaggio di errore che Marketo riceve durante l’unione in Salesforce. |
1077 | Chiamata Unisci lead non riuscita a causa della lunghezza del campo "SFDC" | Una chiamata di Merge Leads con mergeInCRM impostato su true non è riuscita perché "SFDC Field" ha superato il limite di caratteri consentiti. Per correggerlo, riduci la lunghezza di "SFDC Field" o imposta mergeInCRM su false. |
1078 | Chiamata Unisci lead non riuscita a causa di un'entità eliminata, non un lead/contatto o perché i criteri di filtro del campo non corrispondono. | Errore di unione. Impossibile eseguire l'operazione di unione in CRM sincronizzato in modo nativo Questo è il messaggio di errore che Marketo riceve durante l’unione in Salesforce. |
1079 | Chiamata Unisci lead non riuscita a causa di un conflitto di URL personalizzati in record duplicati | Una chiamata di unione di lead ha specificato molti lead con lo stesso URL personalizzato. Per risolvere, utilizzare l'interfaccia utente di Marketo Engage per unire questi record. |