Di seguito vengono descritte le funzioni per accedere ai dati dei contatti utilizzando l'API REST.
Dati dei contatti
Parametri comuni
Le operazioni di manipolazione dei dati dei contatti sono molto simili tra loro.
La richiesta è codificata come una struttura con due campi principali: "options" e "values".
Request Body campo "options"
Opzioni | Tipo | Valore di default | Descrizione |
---|---|---|---|
iddatabase | Integer | ID del database per il nuovo contatto. | |
sendemail | Boolean | false | Richiesta di inviare un'email al contatto. |
sendemailonactions | String (comma separated values) | insert, restore | Elenco delle azioni per le quali inviare l'email
|
idtemplate | Integer | null | ID transazionale da usare per l'email. |
enterworkflow | Boolean | false | Richiesta per il contatto di entrare in un workflow. |
enterworkflowonactions | String (comma separated values) | insert, restore | Elenco delle azioni in base a cui un contatto entrerà nel workflow. |
key | String | null | ID evento API del nodo (di tipo Evento API) da cui il contatto entra nel workflow. Se non viene specificato l'ID del workflow, allora saranno avviati tutti i workflow che hanno lo stesso ID evento API. |
idworkflow | Integer | 0 | ID del workflow in cui deve entrare il contatto (opzionale). Se non viene specificato (0), saranno avviati tutti i workflow che contengono l'ID evento API specificato. Altrimenti sarà avviato solo il workflow specificato (ID). |
wf.[VAR_NAME] | Primitive types | Optionally, it is feasible to associate enter-flow requests with session context variables: any of such variables can be specified adopting the pattern wf.[VAR_NAME] , where [VAR_NAME] is to be replaced with the actual variable name. Primitive types values can be assigned to these variables. Multiple context variables can be bound to the same request. |
|
denyupdatecontact | Boolean | false | Impedisce l'aggiornamento del contatto. |
forceallowrestorecontactonupdate | Boolean | false | Permette di riattivare un contatto sospeso o disiscritto anche se 'denyupdatecontact' è impostato a 'true'. |
denysubscribenewcontact | Boolean | false | Impedisce l'iscrizione di nuovi contatti. |
denysubscribeunsubscribedcontact | Boolean | false | Rifiuta di riattivare contatti già disiscritti. |
messageRetention | String | "minimal" | Specifica una policy di retention per il messaggio di benvenuto, tra "minimal" (scarta il corpo del messaggio), "full" (conserva l'intero messaggio e gli header) e "reserved" (scarta il destinatario). |
lookuprelations | Boolean | false | If 'true' for every relation field a lookup on the table is done in order to use the logical primary key value of the table instead of the integer internal key |
addToSimpleGroup | Integer | (empty) | Se non è vuoto, il contatto sarà aggiunto alla audience indicata. L'ID deve essere un ID valido di una audience statica nel database a cui appartiene il contatto. Se il contatto appartiene già all'audience, non sarà segnalato nessun errore. |
removeFromSimpleGroup | Integer | (empty) | Se non è vuoto, il contatto sarà rimosso dalla audience indicata.L'ID deve essere un ID valido di una audience statica nel database a cui appartiene il contatto. Se il contatto non appartiene all'audience, non sarà segnalato nessun errore. |
returnwebtrackingid | Boolean | false | ID sessione web tracking del contatto. |
storeEvent | String | Questa opzione richiede la registrazione di un evento (event). L'unico valore valido è 'contactUnsubscribed'. È necessario anche fornire l'opzione messageRef. | |
messageRef | String | Imposta il messaggio di riferimento in cui registrare l'evento richiesto dall'opzione storeEvent. È possibile ottenere questo valore usando il segnaposto [message:ref]. |
Request Body field "values"
Questo oggetto contiene la lista dei campi da associare al nuovo contatto, usa il campo ID come chiave, ad esempio "email", "name", ecc.
Per i numeri decimali usa una stringa di tipo JSON e il separatore indicato per l'utente che esegue l'operazione.
Esempio: "decimal_number": "1234.56"
o "decimal_number": "1234,56"
a seconda del formato dei numeri reali indicati nelle impostazioni internazionali dell'utente.
Response Body fields
La risposta è una struttura con questi campi:
Key | Tipo | Descrizione |
---|---|---|
ok | Boolean | True se l'operazione ha successo |
pk | String | Primary key del contatto |
idcontact | Integer | ID (unico, intero) del contatto |
action | String | Azione che è stata eseguita. Può essere: "insert","update","delete","nothing","reactivate","restore", "subscription_confirm", "suspend" |
errors | List of errors | Lista degli errori, Per ogni errore c'è un tipo e un riferimento al campo non valido, i possibili errori sono: SYNTAX_ERROR , UNIQUE_CONSTRAINT_VIOLATION , EMPTY_REQUIRED_FIELD , GENERIC_ERROR , ACTION_NOT_ALLOWED
|
sendemail | Structure | Contiene il risultato dell'invio dell'email |
sendemail.emailsent | Boolean | True se l'email è stata inviata |
sendemail.emailaddress | String | Destinatario dell'email |
sendemail.idsimplemessage | String | ID del messaggio transazionale |
enterworkflow | Structure | Contiene il risultato della richiesta di ingresso nel workflow |
enterworkflow.workflowentered | Boolean | True se è stata avviata almeno una sessione di workflow, per il contatto, come risultato |
enterworkflow.idworkflowsessions | List of Integers | Elenco degli ID di sessione corrispondenti alle sessioni del workflow avviate come risultato |
Iscrivi un contatto
Se usi il campo Status
, i valori ammessi sono: subscribed, unconfirmed, unsubscribed e suspended.
POST https://apiserver/ws/rest/api/v19/contacts/subscribe
Risultato: un nuovo contatto viene iscritto o, se già presente, aggiornato e il suo stato corrispondente viene impostato a 'subscribed', per i parametri vedi Parametri comuni.
Esempio di richiesta:
{ "options": { "iddatabase": 1, "sendemail": true, "idtemplate": 8 }, "values": { "email":"myemail@domain.com" } }
Esempio di richiesta:
{ "ok": false, "idcontact": 123, "action":"insert", "pk":"myemail@domain.com", "sendemail":{ "emailsent":true, "emailaddress":"myemail@domain.com", "idsimplemessage":1 }, "enterworkflow": null }
Ulteriori esempi:
{ "options": { "iddatabase": 1, "enterworkflow": true, "enterworkflowonactions":"insert", "key": "contactadded" }, "values": { "email":"myemail@domain.com" } }
Esempio di possibile risposta alla richiesta precedente:
{ "ok": true, "idcontact": 123, "action":"insert", "pk":"myemail@domain.com", "enterworkflow":{ "workflowentered":true, "idworkflowsessions": [1, 3, 5] }, "sendemail": null }
Disiscrivi un contatto
POST https://apiserver/ws/rest/api/v19/contacts/unsubscribe
Risultato: un contatto esistente viene disiscritto, i campi diversi da "status" possono essere aggiornati, per i parametri vedi Parametri comuni.
Request Body example 1 (using idcontact):
{ "values": { "idcontact":65, "CAUSA_ELIMINAZIONE":1 } }
Nota: il valore di CAUSA_ELIMINAZIONE (riferito al campo del contatto Causa di disiscrizione) è opzionale, numerico, e può variare in base alla definizione del campo nel tuo account.
Request Body example 2 (using primarykey and iddatabase):
{ "options": { "iddatabase": 1 }, "values": { "email":"myemail@domain.com" } }
Request Body example 3 (using sendemail):
{ "options": { "iddatabase": 1, "sendemail": true, "sendemailonactions": "update,delete", "idtemplate": 8 }, "values": { "email":"myemail@domain.com" } }
Esempio di risposta:
{ "ok": false, "idcontact": 65, "action":"insert", "pk":"myemail@domain.com", "errors": null, "sendemail": null, "enterworkflow": null }
Update single contact data using the primary key
POST https://apiserver/ws/rest/api/v19/contacts/merge
Risultato: un contatto esistente viene aggiornato, se un contatto non esiste viene creato con stato = 'subscribed', vedi Parametri comuni per i parametri.
Se stai disiscrivendo un contatto usando la chiave primaria e nessun contatto corrisponde alla tua query, sarà creato un nuovo contatto con stato = 'unsubscribed'. Questo è utile generalmente, per registrare che un contatto non vuole ricevere messaggi da te.
Request Body example 1 (usando idcontact):
{ "options": { }, "values": { "idcontact":65 } }
Request Body example 2 (usando primarykey e iddatabase):
{ "options": { "iddatabase": 1 }, "values": { "email":"myemail@domain.com" } }
Response example:
{ "ok": false, "idcontact": 65, "action":"insert", "pk":"myemail@domain.com", "errors": null, "sendemail": null, "enterworkflow": null }
Get di un contatto
GET https://apiserver/ws/rest/api/v19/contacts/contact/{idcontact}
Risultato: ottiene tutti i campi di un contatto
Parametri per la query:
Chiave | Tipo | Descrizione |
---|---|---|
idcontact | Integer | ID del contatto |
Get a Web Tracking ID for single contact
GET https://apiserver/ws/rest/api/v19/webtracking/contact/{idcontact}
Risultato: ottiene un ID Web Tracking ID per un singolo contatto.
Path parameters:
Key | Tipo | Descrizione |
---|---|---|
idcontact | Integer | ID del contatto |
Esempio di risposta:
{ "idcontact": 1234, "idwebtracking": "xxxxxxxxx", "idaddressbook": 5555, "primaryKey": "foo@example.com" }
Update single contact by ID
POST https://apiserver/ws/rest/api/v19/contacts/contact/{idcontact}
Risultato: modifica un singolo contatto, vedi Parametri comuni per i parametri.
Parametri della query:
Key | Tipo | Descrizione |
---|---|---|
idcontact | Integer | ID del contatto |
Update multiple contact data with batch service
POST https://apiserver/ws/rest/api/v19/contacts/batchmerge
Risultato: un contatto esistente viene modificato; se un contatto non esiste allora viene creato con lo stato = 'subscribed' (iscritto), vedi Parametri comuni per i parametri..
Parametro | Tipo | Descrizione |
---|---|---|
iddatabase | String | (Obbligatorio) ID del database in cui il contatto sarà inserito / modificato / disiscritto |
values | List of BatchMergeValues | È almeno necessario definire la chiave primaria del database - es. il campo "EMAIL" |
options | List of MergeContactBodyOptions | Opzioni disponibili: Parametri comuni |
Return values: List of MergeResult
Request Body example:
{ "iddatabase":1, "options":{ "denyupdatecontact":true }, "contacts":[ {"values":[ { "field":"email", "value":"myemail@domain.com" }, { "field":"NAME", "value":"name1" } ]}, {"values":[ { "field":"email", "value":"myemail2@domain.com" }, { "field":"NAME", "value":"name2" } ]} ] }
Response example:
[ { "ok":true, "idcontact":1, "action":"insert", "pk":"myemail1@domain.com", "errors": null, "sendemail":null, "enterworkflow":null, "idwebtracking":null }, { "ok":false, "idcontact":65, "action":"update", "pk":"myemail2@domain.com", "errors": [{ "type":"ACTION_NOT_ALLOWED", "field":null }], "sendemail":null, "enterworkflow":null, "idwebtracking":null } ]
Permessi: Manage contacts of database
Query
Query a list of contact
GET https://apiserver/ws/rest/api/v19/contacts/query?query=QUERY
Risultato: returns a list of contacts
Vedi la documentazione sulle query per scoprire come scrivere una query di tipo SELECT sulla tabella dei contatti (CONTACTS).
Nota: se devi esportare un grande volume di dati, considera di utilizzare Bulk export API
Nota: la query MUST be escaped as every URL parameter
Parametri della query:
Key | Tipo | Descrizione |
---|---|---|
query | String | La query sulla tabella di sistema CONTACTS |
Esempio di query:
query=SELECT * FROM CONTACTS WHERE email='myemail@domain.com' and iddatabase=6
Query a list of Web Tracking ID
GET https://apiserver/ws/rest/api/v19/webtracking/contacts?query={query}
Risultato: data una query sui contatti, ritorna la lista degli ID Web Tracking associati.
Vedi la documentazione sulle query per scoprire come scrivere una query di tipo SELECT sulla tabella dei contatti (CONTACTS).
Nota: the query MUST be escaped as every URL parameter
Parametri della query:
Key | Tipo | Descrizione |
---|---|---|
query | String | La query sulla tabella di sistema CONTACTS |
Esempio di query:
query=SELECT * FROM CONTACTS WHERE email='myemail@domain.com' and iddatabase=6