Creazione di un processo

Per effettuare una richiesta di importazione in blocco, è necessario impostare l’intestazione del tipo di contenuto su "multipart/form-data" e includere almeno un parametro di file con il contenuto del file e un parametro di formato con il valore "csv", "tsv" o "ssv" che indica il formato del file.

POST /bulk/v1/leads.json?format=csv
Content-Type: multipart/form-data; boundary=------WebKitFormBoundaryBQACkJZyaiIAXogC
Content-Length: 311
Host: <munchkinId>.mktorest.com
------WebKitFormBoundaryBQACkJZyaiIAXogC
Content-Disposition: form-data; name="file"; filename="leads.csv"
Content-Type: text/csv

FirstName,LastName,Email,Company
Able,Baker,ablebaker@marketo.com,Marketo
Charlie,Dog,charliedog@marketo.com,Marketo
Easy,Fox,easyfox@marketo.com,Marketo
------WebKitFormBoundaryBQACkJZyaiIAXogC--
{
    "requestId": "d01f#15d672f8560",
    "result": [
        {
            "batchId": 3404,
            "importId": "3404",
            "status": "Queued"
        }
    ],
    "success": true
}

Questo endpoint utilizza dati multipart/modulo come tipo di contenuto. Per risolvere questo problema può essere difficile utilizzare una libreria di supporto HTTP per la lingua desiderata. Un modo semplice per eseguire questa operazione con cURL dalla riga di comando è simile al seguente:

curl -i -F format=csv -F file=@lead_data.csv -F access_token=<Access Token> <REST API Endpoint Base URL>/bulk/v1/leads.json

Dove il file di importazione "lead_data.csv" contiene quanto segue:

FirstName,LastName,Email,Company
Able,Baker,ablebaker@marketo.com,Marketo
Charlie,Dog,charliedog@marketo.com,Marketo
Easy,Fox,easyfox@marketo.com,Marketo

Facoltativamente, puoi anche includere i parametri lookupField, listId e partitionName nella richiesta. lookupField ti consente di selezionare un campo specifico su cui eseguire la deduplicazione, proprio come Lead di sincronizzazione, e il valore predefinito è e-mail. È possibile specificare id come lookupField per indicare un'operazione "solo aggiornamento". listId consente di selezionare un elenco statico in cui importare l'elenco di lead. In questo modo i lead nell'elenco diventeranno membri di questo elenco statico, oltre a eventuali creazioni o aggiornamenti causati dall'importazione. partitionName seleziona una partizione specifica in cui importare. Per ulteriori informazioni, consulta la sezione Workspace e partizioni.

Nella risposta alla chiamata di, osserva che non esiste un elenco di successi o errori come con i lead di sincronizzazione, ma un batchId e un campo di stato per il record nella matrice dei risultati. Questo perché questa API è asincrona e può restituire lo stato In coda, Importazione o Non riuscito. È necessario mantenere il batchId per ottenere lo stato del processo di importazione e per recuperare gli errori e/o gli avvisi al completamento. Il batchId rimane valido per sette giorni.

Stato processo di polling

È consigliabile eseguire il polling del processo ogni 5-30 secondi, a seconda della latenza richiesta e delle limitazioni delle chiamate API, per visualizzare lo stato del processo di importazione. Puoi farlo con l’API Get Import Lead Status.

GET /bulk/v1/leads/batch/{id}.json
{
   "requestId":"8136#146daebc2ed",
   "success":true,
   "result":[
      {
         "batchId":1022,
         "status":"Complete",
         "numOfLeadsProcessed":2,
         "numOfRowsFailed":1,
         "numOfRowsWithWarning":0,
         "message":"Import completed with errors, 2 records imported (2 members), 1 failed"
      }
   ]
}

Questa risposta mostra un’importazione completata, ma lo stato può essere uno dei seguenti:

  • Completo
  • In coda
  • Importazione
  • Operazione non riuscita

Se il processo è stato completato, viene visualizzato un elenco del numero di righe elaborate, non riuscite, in quelle con avvisi. Il parametro message (Messaggio) può anche inviare il messaggio di errore se lo stato è Failed (Non riuscito).

Errori

Gli errori sono indicati dall'attributo "numOfRowsFailed" nella risposta Get Import Lead Status. Se "numOfRowsFailed" è maggiore di zero, tale valore indica il numero di errori che si sono verificati.

Per recuperare i record e le cause delle righe non riuscite, è necessario recuperare il file di errore:

GET /bulk/v1/leads/batch/{id}/failures.json

L’API risponde con un file che indica quali righe non sono riuscite, insieme a un messaggio che indica il motivo per cui il record non è riuscito. Il formato del file è lo stesso specificato nel parametro "format" durante la creazione del processo. A ogni record viene aggiunto un campo aggiuntivo con una descrizione dell’errore.