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 : code 0 signifie succès, message décrit le résultat et data contient la charge utile. Le traitement par lots des écritures de membres dépend de l’opération : OVERRIDE s’exécute uniquement après réception de tous les lots ; chaque lot APPEND et REMOVE est appliqué indépendamment. data.status et data.complete dans 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" }'
              
              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"
  }'

            
Afficher ce bloc de code dans la fenêtre flottante

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" } }
              
              {
  "code": 0,
  "message": "success",
  "data": {
    "segmentId": 123456789,
    "name": "High-value users",
    "generation": "generation-1"
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante
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"} ] }'
              
              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"}
    ]
  }'

            
Afficher ce bloc de code dans la fenêtre flottante

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 } }
              
              {
  "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
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante

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 } }
              
              {
  "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
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante

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 } }
              
              {
  "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
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante
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 OVERRIDE lorsqu’aucun utilisateur ne correspond ; voir 55214). La réponse renvoie des comptages et jusqu’à 100 échantillons d’identifiants. Les échantillons peuvent inclure identityValue ; protégez les données de réponse en conséquence.

Icon Solid Transparent White Qiyu
Contactez-nous