Création d'une cible simple
Cible Mindbaz
Une cible simple vous permet de cibler les abonnés de votre BDD MINDBAZ. Vous pouvez les utiliser pour envoyer un test bat, une campagne ou définir un export. Une cible est composée de plusieurs critères appelés “filtre”.
Il existe plusieurs types de filtre:
- les filtres déclaratifs (ex > code postal, adresse, type d’optin, webmail, etc),
- les filtres comportementaux (ex > a ouvert / cliqué sur une campagne),
- les filtres de géolocalisation
- les filtres par fichier (sélectionne les emails présents dans un fichier)
- etc.
Une cible doit d’abord être créée avec l’api Targets et ensuite on vient lui assigner des filtres avec l’api targetFilters.
Dans l'interface, il est possible de créer également des cibles combinées. Ce type de cible combine plusieurs cibles en faisant un union, une intersection ou une soustraction entre elles. L'api targets ne permet pas à ce jour de créer ce type de cible.
Création d'une cible simple
Tout d’abord, créons notre première cible en appelant POST api/{idsite}/Targets.
Les paramètres à spécifier dans l'url sont les suivants:
Nom | Description | Type | Informations complémentaires |
---|---|---|---|
idsite | Identifiant de site MindBaz | Nombre entier | Obligatoire |
Dans le corps de la requête, les paramètres à passer sous la forme "application/json, text/json" sont les suivants:
Nom | Description | Type | Informations complémentaires |
---|---|---|---|
name | Nom de la cible (255 carac max) | Chaine de caractères | Obligatoire |
isTestTarget | true s'il s'agit d'une cible pour BAT | Booléen | Aucune |
pctSelect | Pourcentage de la cible à selectionner (100 par defaut). | Nombre entier | Aucune |
maxSelect | Nombre maximum d’emails à sélectionner par la cible (si défini, maxSelect remplace pctSelect). | Nombre entier | Aucune |
isRandomMode | True pour activer le mode aléatoire (utile avec un pourcentage inférieur à 100). Attention: Il ne faut exclure une cible qui est en mode aléatoire car la population excluse sera différente à chaque calcul. | Booléen | Aucune |
excludedTargets | Liste des id de cible à exclure de la cible. | Collection de Nombre entier | Aucune |
isAutomation | true s'il s'agit d'une cible Automation | Booléen | Deprecated |
Exemple
Voici un exemple pour créer une cible qui sélectionne au hasard 10 emails après avoir exclu le resultat des cibles id 1 et 2.
[
{
"name": "sample string 1",
"isTestTarget": false,
"maxSelect": 10,
"isRandomMode": true,
"excludedTargets": [
1,
2
]
}
]
En retour d'appel j'obtiens les informations de la cible nouvellement créée:
{
"success": true,
"data": {
"id": 183813,
"parameters": {
"name": "sample string 1",
"isTestTarget": false,
"pctSelect": 100,
"maxSelect": 10,
"isRandomMode": true,
"excludedTargets": [1,2],
"isAutomation": false
},
"creationDate": "2021-08-25T11:29:41.961503+02:00",
"lastUpdateDate": "2021-08-25T11:29:41.961503+02:00",
"targetType": 1,
"hasFieldFilter": false,
"hasGeolocFilter": false,
"hasSqlFilter": false,
"hasEmailPressureFilter": false,
"hasBehaviourFilter": false,
"hasReactivityFilter": false,
"hasSendingFilter": false,
"hasFileFilter": false,
"hasThematicFilter": false
},
"error": null,
"typeName": "Target"
}
Codeline d'une cible simple
- C#
- Java
- Python
string token = ""; //Valeur du token récupéré pour l'authentification
string idSite = ""; //Valeur de l'identifiant du site
var client = new RestClient("https://api.mindbaz.com/api/" + idSite + "/targets/");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer " + token);
request.AddHeader("Content-Type", "application/json");
var body = @"{""name"": ""sample string 1"",""isTestTarget"": false,""maxSelect"": 10,""isRandomMode"": true,""excludedTargets"": [1,2]}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.mindbaz.com/api/{idsite}/targetfilters/field")
.header("Authorization", "Bearer `TOKEN`")
.header("Content-Type", "application/json")
.body("{\"name\": \"sample string 1\",\"isTestTarget\": false,\"maxSelect\": 10,\"isRandomMode\": true,\"excludedTargets\": [1,2]}")
.asString();
import http.client
import json
conn = http.client.HTTPSConnection("api.mindbaz.com")
payload = json.dumps({
"name": "sample string 1",
"isTestTarget": false,
"maxSelect": 10,
"isRandomMode": True,
"excludedTargets": [
1,
2
]
})
headers = {
'Authorization': 'Bearer `TOKEN`',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/{idsite}/targets/", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
A ce moment, nous avons créé une cible mais aucun filtre n'est défini. A ce stade, la cible n’est pas encore utilisable et ne peut pas apparaître dans le gestionnaire de cibles dans l’interface. Pour que la cible soit valide, il faut qu’elle possède au moins un filtre.
Création d'un filtre
Notre cible a besoin d'au moins un filtre pour fonctionner. Pour en créer un, vous pouvez utiliser l'appel correspondant au type de filtre souhaité:
- Filtre par champ (POST api/{idsite}/targetfilters/{idTarget}/field)
- Filtre par sql (POST api/{idsite}/targetfilters/{idTarget}/sql)
- Filtre par comportement (POST api/{idsite}/targetfilters/{idTarget}/behaviour)
- Filtre par envoi (POST api/{idsite}/targetfilters/{idTarget}/sending)
- Filtre par fichier (POST api/{idsite}/targetfilters/{idTarget}/file)
- Filtre par thématique (POST api/{idsite}/targetfilters/{idTarget}/thematic)
- Filtre par géolocalisation (POST api/{idsite}/targetfilters/{idTarget}/geoloc)
- Filtre par pression email (POST api/{idsite}/targetfilters/{idTarget}/pressure)
Ue cible simple ne peut avoir qu’un seul filtre de chaque type.
Filtre par champs
Pour l'exemple, nous allons créer un filtre par champ.
Les paramètres à spécifier dans l'url sont les suivants:
Nom | Description | Type | Informations complémentaires |
---|---|---|---|
idsite | Identifiant de site MindBaz | Nombre entier | Obligatoire |
Dans le corps de la requête, les paramètres à passer sous la forme "application/json, text/json" sont les suivants:
Nom | Description | Type | Informations complémentaires |
---|---|---|---|
idTarget | identifiant de la cible | Nombre entier | Obligatoire |
isEnabled | true si le filtre est activé | Booléen | Aucune |
filters | Liste des filtres par champ (opérations) à appliquer sur chaque champ. Attention, un champ idField ne peut avoir plus d’un filtre à la fois! | Collection de FieldFilter | Aucune |
Le type FieldFilter est une collection de champs représentant comme suit:
Nom | Description | Type | Informations complémentaires |
---|---|---|---|
idField | Identifiant du champ (0 = id, 1 =email...). La liste des champs est récupérable ici. Cliquez ici pour plus d’informations. | Nombre entier | Obligatoire |
operator | Opérateur à utiliser | EOperator | Obligatoire |
value | Valeur du champ à utiliser avec l'opérateur. Pour le type Date, il faut utiliser le format dd/MM/yyyy Pour le type List, il faut utiliser l’id correspondant à la valeur souhaitée. Par exemple, pour faire “état de l’abonné” = “abonné”. Il faut utiliser { idField=7, operator=3,value=0} | ||
Object | Obligatoire. Nb de carac max = 8000 |
Le type EOperator est de type Enum:
- "HasValue"
- "NoValue"
- "Equals"
- "DifferentThan"
- "LessThan" (pour type Nombre et Date uniquement)
- "MoreThan" (pour type Nombre et Date uniquement)
- "Between" (pour type Nombre et Date uniquement)
- "DatePast" (pour type Date uniquement)
- "DateFuture" (pour type Date uniquement)
- "NbDaysMoreThan" (pour type Date uniquement)
- "NbDaysLessThan" (pour type Date uniquement)
- "AgeGreaterThan" (pour type Date uniquement)
- "AgeLesserThan" (pour type Date uniquement)
- "AgeBetween" (pour type Date uniquement)
Pour les opérateurs “Equals" et "DifferentThan", vous pouvez combiner plusieurs valeurs en les séparant d’un “;”. Un OU logique sera appliqué entre les valeurs.
Vous pouvez par exemple créer une cible bat avec un filtre par champ sur l’email en passant plusieurs emails séparés par des “;”. La longueur du champ étant limitée, si vous avez beaucoup de valeurs à inclure, il faudra mieux utiliser un filtre par fichier.
Exemple
Nous allons ajouter adresse email renseigné
et état de l'abonné égal à désabonné
{
"idTarget": 183813,
"isEnabled": true,
"filters": [
{
"idField": 1,
"operator": 1
},
{
"idField": 7,
"operator": 3,
"value": "1"
}]
}
Le code de retour est le suivant:
{
"success": true,
"data": true,
"error": null,
"typeName": "Boolean"
}
Codeline d'un filtre par champ
- C#
- Java
- Python
string token = ""; //Valeur du token récupéré pour l'authentification
string idSite = ""; //Valeur de l'identifiant du site
var client = new RestClient("https://api.mindbaz.com/api/" + idSite + "/targetfilters/field");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer " + token);
request.AddHeader("Content-Type", "application/json");
var body = @"{""idTarget"": 183813,""isEnabled"": true,""filters"": [{""idField"": 1,""operator"": 1},{""idField"": 7,""operator"": 3,""value"": ""1""}]}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.mindbaz.com/api/{idsite}/targetfilters/field")
.header("Authorization", "Bearer `TOKEN`")
.header("Content-Type", "application/json")
.body("{\"idTarget\": 183813,\"isEnabled\": true,\"filters\": [{\"idField\": 1,\"operator\": 1},{\"idField\": 7,\"operator\": 3,\"value\": \"1\"}]}")
.asString();
import http.client
import json
conn = http.client.HTTPSConnection("api.mindbaz.com")
payload = json.dumps({
"idTarget": 183813,
"isEnabled": True,
"filters": [
{
"idField": 1,
"operator": 1
},
{
"idField": 7,
"operator": 3,
"value": "1"
}
]
})
headers = {
'Authorization': 'Bearer `TOKEN`',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/{idsite}/targetfilters/field", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))