API REST Segments utilisateurs
Créez des segments basés sur des listes mis à jour manuellement et remplacez, ajoutez ou supprimez des membres par ID de segment.
Généralités
- Les requêtes et réponses utilisent du JSON encodé en UTF-8.
- L’URL complète du point de terminaison est la Base URL du centre de données plus le chemin API. Consultez la Présentation de l’API REST pour obtenir la Base URL et l’API Key / l’API Secret.
- Utilisez l’authentification HTTP Basic :
Authorization: Basic ${base64(api_key:api_secret)}. La source de données API liée à l’API Key détermine le projet ; les appelants ne transmettent pas d’ID de projet dans le corps de la requête. - Les réponses réussies partagent une structure commune :
code0signifie succès,messagedécrit le résultat etdatacontient la charge utile. Le traitement par lots des écritures de membres dépend de l’opération :OVERRIDEs’exécute uniquement après réception de tous les lots ; chaque lotAPPENDetREMOVEest appliqué indépendamment.data.statusetdata.completedans la réponse indiquent l’état de traitement.
Créer un segment basé sur une liste
Crée un segment en mode de mise à jour manuelle avec le téléversement de liste comme méthode de création. Le segment n’a aucun membre après création ; utilisez Mettre à jour les membres du segment pour téléverser la liste.
Point de terminaison
POST /v1/segments
Exemple de requête
curl -X POST 'https://ma-api.engagelab.com/v1/segments' \
-H 'Authorization: Basic {base64(api_key:api_secret)}' \
-H 'Content-Type: application/json' \
-d '{
"name": "High-value users",
"description": "High-value user list synced from the order system"
}'
Paramètres de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name |
String | Oui | Nom du segment. Ne peut pas être vide, jusqu’à 50 caractères ; doit être unique dans le projet. Les espaces en début et fin de chaîne sont supprimés. |
description |
String | Non | Description du segment, jusqu’à 200 caractères. |
Exemple de réponse
{
"code": 0,
"message": "success",
"data": {
"segmentId": 123456789,
"name": "High-value users",
"generation": "generation-1"
}
}
| Champ | Type | Description |
|---|---|---|
segmentId |
Long | ID du nouveau segment, utilisé pour les téléversements de liste ultérieurs. |
name |
String | Nom du segment. |
generation |
String | Identifiant de génération actuelle des membres. Un segment nouvellement créé n’a aucun membre. |
Mettre à jour les membres du segment
Un seul point de terminaison remplace, ajoute ou supprime des membres de liste. Seuls les segments du projet actuel créés par téléversement de liste, en mise à jour manuelle et actifs sont acceptés. Les identifiants utilisateur doivent correspondre à des utilisateurs actifs existants dans le projet ; l’API ne crée pas d’actifs utilisateur. Lorsque le segment ne remplit pas les conditions, les erreurs 55210–55214 sont renvoyées (voir Réponses d’erreur).
Point de terminaison
POST /v1/segments/{segmentId}/members
Exemple de requête
L’exemple suivant divise une opération OVERRIDE en deux lots. Chaque batchId représente une opération de liste ; tous les lots doivent utiliser le même batchId, operation et batchCount. OVERRIDE applique le changement de liste uniquement après réception de tous les lots. APPEND et REMOVE prennent effet dès que la requête de lot correspondante réussit.
curl -X POST 'https://ma-api.engagelab.com/v1/segments/123456789/members' \
-H 'Authorization: Basic {base64(api_key:api_secret)}' \
-H 'Content-Type: application/json' \
-d '{
"batchId": "crm-sync-20260915-001",
"operation": "OVERRIDE",
"batchIndex": 0,
"batchCount": 2,
"members": [
{"euid": "100001"},
{"identityName": "user_id", "identityValue": "user-002"}
]
}'
Lors de la réception du premier lot OVERRIDE, status dans la réponse est RECEIVING et complete est false. Soumettez le lot restant avec le même batchId et définissez batchIndex sur 1.
Paramètres de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
segmentId |
Long | Oui | Paramètre de chemin : ID du segment cible. |
batchId |
String | Oui | ID de lot pour une opération de liste complète, jusqu’à 128 caractères, lettres, chiffres, points, underscores, deux-points et tirets uniquement. Utilisé comme clé d’idempotence par projet et segment sur 24 heures. |
operation |
String | Oui | Opération de liste : OVERRIDE (remplacer), APPEND (ajouter), REMOVE (supprimer). |
batchIndex |
Integer | Oui | Index du lot actuel, à partir de 0, et doit être inférieur à batchCount. |
batchCount |
Integer | Oui | Nombre total de lots pour cette opération, 1–10. Tous les lots combinés peuvent inclure au maximum 10 000 identifiants de membres. |
members |
Array<Object> |
Oui | Identifiants de membres dans le lot actuel. Ne peut pas être vide ; jusqu’à 1 000 par lot. Chaque élément utilise l’un des formats du tableau ci-dessous. |
Les éléments members prennent en charge les deux formats suivants ; euid ne peut pas être envoyé avec identityName / identityValue :
| Champ | Type | Description |
|---|---|---|
euid |
String | EUID du projet ; doit être une chaîne d’entier positif, p. ex. "100001". |
identityName |
String | Nom d’identité utilisateur configuré dans le projet. Ne peut pas être vide, jusqu’à 128 caractères. |
identityValue |
String | Valeur d’identité. Ne peut pas être vide, jusqu’à 256 caractères ; utilisée avec identityName. Les valeurs de plus de 256 caractères ne font pas échouer toute la requête ; la ligne est comptée dans invalidCount. |
Opérations sur la liste
| Opération | Description |
|---|---|
OVERRIDE |
Après réception de tous les lots, remplace la liste actuelle par les utilisateurs correspondants dans cette soumission. Si aucun utilisateur actif ne correspond, la requête est rejetée avec 55214 et la liste existante reste inchangée. |
APPEND |
Après succès du lot actuel, ajoute les utilisateurs correspondants à la liste ; les utilisateurs déjà dans le segment ne sont pas dupliqués. Les autres lots ne sont pas attendus. |
REMOVE |
Après succès du lot actuel, supprime les utilisateurs correspondants de la liste ; les utilisateurs absents du segment n’entraînent aucun changement supplémentaire. Les autres lots ne sont pas attendus. |
Les nouvelles tentatives avec le même batchId doivent utiliser la même opération, batchCount et contenu de lot ; le même batchId et batchIndex ne peuvent pas porter un contenu différent. Les résultats idempotents sont conservés 24 heures.
Les lots OVERRIDE sont retenus jusqu’à réception complète, puis appliqués ; les données retenues expirent après un TTL de 24 heures, et la liste n’est pas modifiée si les lots sont incomplets avant expiration. Chaque lot APPEND et REMOVE s’applique indépendamment ; batchCount et batchIndex identifient toujours les lots, prennent en charge l’idempotence et suivent la progression sans bloquer le lot actuel.
Chaque changement de liste réussi est enregistré dans l’historique de mise à jour du segment avec la source REST API. OVERRIDE est journalisé par lot terminé ; APPEND et REMOVE par lot réussi. Les enregistrements d’audit n’incluent pas d’échantillons d’identifiants non correspondants ou invalides.
Exemples de réponse
Lot pas encore terminé :
{
"code": 0,
"message": "success",
"data": {
"batchId": "crm-sync-20260915-001",
"operation": "OVERRIDE",
"status": "RECEIVING",
"complete": false,
"expectedBatchCount": 2,
"receivedBatchCount": 1,
"inputCount": 2,
"matchedCount": 2,
"unmatchedCount": 0,
"unmatchedSamples": [],
"unmatchedSamplesTruncated": false,
"invalidCount": 0,
"invalidSamples": [],
"invalidSamplesTruncated": false,
"enterCount": 0,
"exitCount": 0
}
}
Lot OVERRIDE terminé :
{
"code": 0,
"message": "success",
"data": {
"batchId": "crm-sync-20260915-001",
"operation": "OVERRIDE",
"status": "COMPLETED",
"complete": true,
"expectedBatchCount": 2,
"receivedBatchCount": 2,
"inputCount": 3,
"matchedCount": 2,
"unmatchedCount": 1,
"unmatchedSamples": [
{"identityName": "user_id", "identityValue": "user-not-found"}
],
"unmatchedSamplesTruncated": false,
"invalidCount": 1,
"invalidSamples": [
{"identityName": "not_configured", "identityValue": "example"}
],
"invalidSamplesTruncated": false,
"enterCount": 2,
"exitCount": 1
}
}
Lorsqu’un lot APPEND ou REMOVE réussit, le lot actuel s’applique immédiatement et renvoie complete: true même si batchCount est supérieur au nombre de lots reçus jusqu’à présent. Par exemple, avec batchCount 2 et seulement le premier lot reçu, receivedBatchCount est 1 et status est COMPLETED.
{
"code": 0,
"message": "success",
"data": {
"batchId": "crm-sync-20260915-append",
"operation": "APPEND",
"status": "COMPLETED",
"complete": true,
"expectedBatchCount": 2,
"receivedBatchCount": 1,
"inputCount": 2,
"matchedCount": 1,
"unmatchedCount": 1,
"unmatchedSamples": [
{"identityName": "user_id", "identityValue": "user-not-found"}
],
"unmatchedSamplesTruncated": false,
"invalidCount": 0,
"invalidSamples": [],
"invalidSamplesTruncated": false,
"enterCount": 1,
"exitCount": 0
}
}
| Champ | Type | Description |
|---|---|---|
batchId |
String | ID de lot pour cette opération de liste. |
operation |
String | Opération de liste pour cette requête. |
status |
String | RECEIVING : OVERRIDE en attente de lots ; PROCESSING : en attente du verrou de changement de liste ; COMPLETED : opération en cours terminée. |
complete |
Boolean | Pour OVERRIDE, tous les lots appliqués ; pour APPEND/REMOVE, lot actuel appliqué — tous les lots ne sont pas nécessairement soumis. |
expectedBatchCount |
Integer | Nombre total de lots attendu. |
receivedBatchCount |
Integer | Nombre d’indices de lot distincts reçus ; pour APPEND/REMOVE, utilisé uniquement pour les statistiques et ne bloque pas le lot actuel. |
inputCount |
Integer | Lignes d’entrée valides = matchedCount + unmatchedCount, hors identifiants invalides. OVERRIDE compte les lots reçus (lot complet une fois terminé) ; APPEND/REMOVE comptent le lot actuel. |
matchedCount |
Integer | Identifiants correspondant à des utilisateurs actifs. |
unmatchedCount |
Integer | Identifiants ne correspondant à aucun utilisateur actif. |
unmatchedSamples |
Array<Object> |
Échantillon d’identifiants non correspondants, même structure que les membres de la requête, jusqu’à 100. |
unmatchedSamplesTruncated |
Boolean | Indique si les échantillons non correspondants ont été tronqués à 100. |
invalidCount |
Integer | Identifiants invalides, non inclus dans inputCount. Inclut : euid non entier positif, euid envoyé avec des champs d’identité, identityName/identityValue vides ou incohérents, identityName de plus de 128 caractères, identityValue de plus de 256 caractères, nom d’identité non configuré, une identité correspondant à plusieurs utilisateurs actifs. |
invalidSamples |
Array<Object> |
Échantillon d’identifiants invalides, même structure que les membres de la requête, jusqu’à 100. |
invalidSamplesTruncated |
Boolean | Indique si les échantillons invalides ont été tronqués à 100. |
enterCount |
Integer | Utilisateurs réellement ajoutés au segment lors de cette exécution. |
exitCount |
Integer | Utilisateurs réellement retirés du segment lors de cette exécution. |
Les échantillons suivent la structure d’objet d’identifiant de membre de la requête et peuvent inclure le identityValue soumis. Le serveur ne stocke les échantillons que dans le cache d’idempotence de 24 heures, pas dans les enregistrements d’audit ; traitez les réponses et les journaux conformément à vos exigences de conformité des données.
Si la réponse est PROCESSING, réessayez avec le même batchId, batchIndex et le contenu de lot d’origine pour un résultat idempotent. Il n’existe pas d’API distincte pour interroger la progression des lots.
Réponses d’erreur
Les erreurs utilisent code et message ; consultez les Codes de statut HTTP pour les codes de statut HTTP et les codes de retour généraux.
| Statut HTTP | Code | Description |
|---|---|---|
| 401 | 40050 |
Échec de l’authentification API Key / API Secret, ou la source de données API est désactivée. |
| 400 | 40026 |
Un segment utilisateur portant le même nom existe déjà dans le projet (chemin de création, transmission Metadata). |
| 400 | 40032 |
Limite du nombre de segments utilisateurs atteinte (chemin de création, transmission Metadata). |
| 400 | 55201 |
Le segment utilisateur n’existe pas (chemin de téléversement de liste). |
| 400 | 55210 |
La méthode de création du segment ne prend pas en charge le téléversement de liste REST API : le segment cible n’a pas été créé par téléversement de liste (p. ex. segment basé sur des règles). |
| 400 | 55211 |
Le mode de mise à jour du segment ne prend pas en charge le téléversement de liste REST API : le segment cible n’est pas mis à jour manuellement. |
| 400 | 55212 |
L’état du cycle de vie du segment ne prend pas en charge le téléversement de liste REST API : le segment cible n’est pas actif. |
| 400 | 55213 |
Le segment n’a pas de génération de membres disponible ; téléversement de liste REST API temporairement non pris en charge. |
| 400 | 55214 |
Remplacement par liste vide non autorisé : après tous les lots OVERRIDE, aucun utilisateur actif n’a été correspondant. |
| 400 | 55004 |
Champs de requête ou paramètres de lot de liste invalides. |
| 503 | 55207 |
Métadonnées du segment temporairement indisponibles. |
| 500 | 55000 |
Erreur interne du serveur. |
Lors de la création d’un segment, les codes d’erreur métier et message de Metadata sont transmis à l’appelant, p. ex. nom en double 40026, limite 40032. Sur le chemin de téléversement de liste, « segment inexistant » renvoie 55201 au lieu de 40027.
Les identifiants de membres non correspondants ou invalides ne font pas échouer l’ensemble de l’opération de liste (sauf
OVERRIDElorsqu’aucun utilisateur ne correspond ; voir55214). La réponse renvoie des comptages et jusqu’à 100 échantillons d’identifiants. Les échantillons peuvent inclureidentityValue; protégez les données de réponse en conséquence.










