Benutzersegmente REST-API
Erstellen Sie manuell aktualisierte listenbasierte Segmente und überschreiben, erweitern oder entfernen Sie Mitglieder anhand der Segment-ID.
Allgemeines
- Anfragen und Antworten verwenden JSON in UTF-8-Kodierung.
- Die vollständige Endpunkt-URL setzt sich aus der Base URL des Rechenzentrums und dem API-Pfad zusammen. Informationen zum Abrufen der Base URL sowie von API Key / API Secret finden Sie in der RestAPI-Übersicht.
- Verwenden Sie HTTP Basic Authentication:
Authorization: Basic ${base64(api_key:api_secret)}. Die an den API Key gebundene API-Datenquelle bestimmt das Projekt; Aufrufer übergeben keine Projekt-ID im Anfragebody. - Erfolgreiche Antworten folgen einer gemeinsamen Struktur:
code0bedeutet Erfolg,messagebeschreibt das Ergebnis unddataenthält die Nutzdaten. Die Stapelverarbeitung für Mitglieder-Schreibvorgänge hängt von der Operation ab:OVERRIDEwird erst ausgeführt, nachdem alle Stapel empfangen wurden; jeder Stapel vonAPPENDundREMOVEwird unabhängig angewendet.data.statusunddata.completein der Antwort zeigen den Verarbeitungsstatus an.
Listenbasiertes Segment erstellen
Erstellt ein Segment mit manuellem Aktualisierungsmodus und Listen-Upload als Erstellungsmethode. Das Segment hat nach der Erstellung keine Mitglieder; verwenden Sie Segmentmitglieder aktualisieren, um die Liste hochzuladen.
Endpunkt
POST /v1/segments
Anfragebeispiel
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"
}'
Anfrageparameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Segmentname. Darf nicht leer sein, maximal 50 Zeichen; muss innerhalb des Projekts eindeutig sein. Führende und nachgestellte Leerzeichen werden entfernt. |
description |
String | Nein | Segmentbeschreibung, maximal 200 Zeichen. |
Antwortbeispiel
{
"code": 0,
"message": "success",
"data": {
"segmentId": 123456789,
"name": "High-value users",
"generation": "generation-1"
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
segmentId |
Long | ID des neuen Segments, wird für nachfolgende Listen-Uploads verwendet. |
name |
String | Segmentname. |
generation |
String | Kennung der aktuellen Mitgliedergeneration. Ein neu erstelltes Segment hat keine Mitglieder. |
Segmentmitglieder aktualisieren
Ein einzelner Endpunkt überschreibt, erweitert oder entfernt Listenmitglieder. Es werden nur Segmente im aktuellen Projekt akzeptiert, die per Listen-Upload erstellt wurden, manuell aktualisiert werden und aktiv sind. Benutzerkennungen müssen bestehenden aktiven Benutzern im Projekt entsprechen; die API erstellt keine Benutzer-Assets. Wenn das Segment nicht qualifiziert ist, werden die Fehler 55210–55214 zurückgegeben (siehe Fehlerantworten).
Endpunkt
POST /v1/segments/{segmentId}/members
Anfragebeispiel
Das folgende Beispiel teilt eine OVERRIDE-Operation in zwei Stapel auf. Jede batchId steht für eine Listenoperation; alle Stapel müssen dieselbe batchId, operation und batchCount verwenden. OVERRIDE wendet die Listenänderung erst an, nachdem alle Stapel empfangen wurden. APPEND und REMOVE treten in Kraft, sobald die jeweilige Stapelanfrage erfolgreich ist.
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"}
]
}'
Wenn der erste OVERRIDE-Stapel empfangen wird, ist status in der Antwort RECEIVING und complete ist false. Senden Sie den verbleibenden Stapel mit derselben batchId und setzen Sie batchIndex auf 1.
Anfrageparameter
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
segmentId |
Long | Ja | Pfadparameter: Ziel-Segment-ID. |
batchId |
String | Ja | Batch-ID für eine vollständige Listenoperation, maximal 128 Zeichen, nur Buchstaben, Ziffern, Punkte, Unterstriche, Doppelpunkte und Bindestriche. Dient innerhalb von 24 Stunden pro Projekt und Segment als Idempotenzschlüssel. |
operation |
String | Ja | Listenoperation: OVERRIDE (ersetzen), APPEND (hinzufügen), REMOVE (entfernen). |
batchIndex |
Integer | Ja | Index des aktuellen Stapels, beginnend bei 0, muss kleiner als batchCount sein. |
batchCount |
Integer | Ja | Gesamtzahl der Stapel für diese Operation, 1–10. Alle Stapel zusammen dürfen höchstens 10.000 Mitgliedskennungen enthalten. |
members |
Array<Object> |
Ja | Mitgliedskennungen im aktuellen Stapel. Darf nicht leer sein; bis zu 1.000 pro Stapel. Jedes Element verwendet eines der Formate in der folgenden Tabelle. |
members-Elemente unterstützen die folgenden zwei Formate; euid darf nicht zusammen mit identityName / identityValue gesendet werden:
| Feld | Typ | Beschreibung |
|---|---|---|
euid |
String | Projekt-EUID; muss eine positive Ganzzahl als String sein, z. B. "100001". |
identityName |
String | Konfigurierter Benutzeridentitätsname im Projekt. Darf nicht leer sein, maximal 128 Zeichen. |
identityValue |
String | Identitätswert. Darf nicht leer sein, maximal 256 Zeichen; wird mit identityName verwendet. Werte über 256 Zeichen führen nicht zum Fehlschlagen der gesamten Anfrage; die Zeile wird in invalidCount gezählt. |
Listenoperationen
| Operation | Beschreibung |
|---|---|
OVERRIDE |
Nach Empfang aller Stapel wird die aktuelle Liste durch in dieser Übermittlung abgeglichene Benutzer ersetzt. Wenn keine aktiven Benutzer abgeglichen werden, wird die Anfrage mit 55214 abgelehnt und die bestehende Liste bleibt unverändert. |
APPEND |
Nach erfolgreichem aktuellen Stapel werden abgeglichene Benutzer zur Liste hinzugefügt; bereits im Segment befindliche Benutzer werden nicht dupliziert. Es wird nicht auf andere Stapel gewartet. |
REMOVE |
Nach erfolgreichem aktuellen Stapel werden abgeglichene Benutzer aus der Liste entfernt; Benutzer, die nicht im Segment sind, verursachen keine zusätzliche Änderung. Es wird nicht auf andere Stapel gewartet. |
Wiederholungen mit derselben batchId müssen dieselbe Operation, batchCount und Stapelinhalt verwenden; dieselbe batchId und batchIndex dürfen unterschiedliche Inhalte nicht tragen. Idempotente Ergebnisse werden 24 Stunden aufbewahrt.
OVERRIDE-Stapel werden gehalten, bis alle empfangen wurden, und dann angewendet; gehaltene Daten verfallen nach einer 24-Stunden-TTL, und die Liste wird nicht geändert, wenn Stapel vor Ablauf unvollständig sind. Jeder APPEND- und REMOVE-Stapel wird unabhängig angewendet; batchCount und batchIndex identifizieren weiterhin Stapel, unterstützen Idempotenz und verfolgen den Fortschritt, ohne den aktuellen Stapel zu blockieren.
Jede erfolgreiche Listenänderung wird in der Segment-Aktualisierungshistorie mit der Quelle REST API protokolliert. OVERRIDE wird pro abgeschlossenem Stapel protokolliert; APPEND und REMOVE pro erfolgreichem Stapel. Auditdatensätze enthalten keine Beispiele nicht abgeglichener oder ungültiger Kennungen.
Antwortbeispiele
Stapel noch nicht vollständig:
{
"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
}
}
OVERRIDE-Stapel abgeschlossen:
{
"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
}
}
Wenn ein APPEND- oder REMOVE-Stapel erfolgreich ist, wird der aktuelle Stapel sofort angewendet und gibt complete: true zurück, auch wenn batchCount größer ist als die bisher empfangene Stapelanzahl. Beispiel: Bei batchCount 2 und nur dem ersten empfangenen Stapel ist receivedBatchCount 1 und status ist 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
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
batchId |
String | Batch-ID für diese Listenoperation. |
operation |
String | Listenoperation für diese Anfrage. |
status |
String | RECEIVING: OVERRIDE wartet auf Stapel; PROCESSING: wartet auf Listenänderungssperre; COMPLETED: aktuelle Operation abgeschlossen. |
complete |
Boolean | Bei OVERRIDE alle Stapel angewendet; bei APPEND/REMOVE aktueller Stapel angewendet – nicht notwendigerweise alle Stapel übermittelt. |
expectedBatchCount |
Integer | Erwartete Gesamtstapelanzahl. |
receivedBatchCount |
Integer | Anzahl unterschiedlicher empfangener Stapelindizes; bei APPEND/REMOVE nur für Statistiken und blockiert den aktuellen Stapel nicht. |
inputCount |
Integer | Gültige Eingabezeilen = matchedCount + unmatchedCount, ohne ungültige Kennungen. OVERRIDE zählt empfangene Stapel (vollständiger Stapel bei Abschluss); APPEND/REMOVE zählen den aktuellen Stapel. |
matchedCount |
Integer | Kennungen, die aktiven Benutzern zugeordnet wurden. |
unmatchedCount |
Integer | Kennungen, die keinen aktiven Benutzern zugeordnet wurden. |
unmatchedSamples |
Array<Object> |
Beispiele nicht abgeglichener Kennungen, gleiche Struktur wie Anfrage-Mitglieder, bis zu 100. |
unmatchedSamplesTruncated |
Boolean | Ob nicht abgeglichene Beispiele bei 100 abgeschnitten wurden. |
invalidCount |
Integer | Ungültige Kennungen, nicht in inputCount enthalten. Umfasst: nicht positive Ganzzahl als euid, euid zusammen mit Identitätsfeldern, leere oder nicht passende identityName/identityValue, identityName über 128 Zeichen, identityValue über 256 Zeichen, Identitätsname nicht konfiguriert, eine Identität passt zu mehreren aktiven Benutzern. |
invalidSamples |
Array<Object> |
Beispiele ungültiger Kennungen, gleiche Struktur wie Anfrage-Mitglieder, bis zu 100. |
invalidSamplesTruncated |
Boolean | Ob ungültige Beispiele bei 100 abgeschnitten wurden. |
enterCount |
Integer | Benutzer, die in dieser Ausführung tatsächlich zum Segment hinzugefügt wurden. |
exitCount |
Integer | Benutzer, die in dieser Ausführung tatsächlich aus dem Segment entfernt wurden. |
Beispiele folgen der Mitgliedskennungs-Objektstruktur aus der Anfrage und können den übermittelten identityValue enthalten. Der Server speichert Beispiele nur im 24-Stunden-Idempotenz-Cache, nicht in Auditdatensätzen; behandeln Sie Antworten und Protokolle gemäß Ihren Datenschutzanforderungen.
Wenn die Antwort PROCESSING ist, wiederholen Sie mit derselben batchId, batchIndex und dem ursprünglichen Stapelinhalt für ein idempotentes Ergebnis. Es gibt keine separate API zur Abfrage des Stapel-Fortschritts.
Fehlerantworten
Fehler verwenden code und message; siehe HTTP-Statuscodes für HTTP-Statuscodes und allgemeine Rückgabecodes.
| HTTP-Status | Code | Beschreibung |
|---|---|---|
| 401 | 40050 |
Authentifizierung mit API Key / API Secret fehlgeschlagen oder die API-Datenquelle ist deaktiviert. |
| 400 | 40026 |
Im Projekt existiert bereits ein Benutzersegment mit demselben Namen (Erstellungspfad, Metadata-Durchreichung). |
| 400 | 40032 |
Limit für Benutzersegmente erreicht (Erstellungspfad, Metadata-Durchreichung). |
| 400 | 55201 |
Benutzersegment existiert nicht (Listen-Upload-Pfad). |
| 400 | 55210 |
Segment-Erstellungsmethode unterstützt keinen REST-API-Listen-Upload: Zielsegment wurde nicht per Listen-Upload erstellt (z. B. regelbasiertes Segment). |
| 400 | 55211 |
Segment-Aktualisierungsmodus unterstützt keinen REST-API-Listen-Upload: Zielsegment wird nicht manuell aktualisiert. |
| 400 | 55212 |
Segment-Lebenszyklusstatus unterstützt keinen REST-API-Listen-Upload: Zielsegment ist nicht aktiv. |
| 400 | 55213 |
Segment hat keine verfügbare Mitgliedergeneration; REST-API-Listen-Upload vorübergehend nicht unterstützt. |
| 400 | 55214 |
Leeres Listen-Override nicht erlaubt: Nach allen OVERRIDE-Stapeln wurden keine aktiven Benutzer abgeglichen. |
| 400 | 55004 |
Anfragefelder oder Listen-Batch-Parameter sind ungültig. |
| 503 | 55207 |
Segment-Metadaten vorübergehend nicht verfügbar. |
| 500 | 55000 |
Interner Serverfehler. |
Beim Erstellen eines Segments werden Geschäftsfehlercodes und message aus Metadata an den Aufrufer durchgereicht, z. B. doppelter Name 40026, Limit 40032. Auf dem Listen-Upload-Pfad liefert „Segment existiert nicht“ 55201 statt 40027.
Nicht abgeglichene oder ungültige Mitgliedskennungen führen nicht zum Fehlschlagen der gesamten Listenoperation (außer
OVERRIDE, wenn keine Benutzer abgeglichen werden; siehe55214). Die Antwort liefert Zählungen und bis zu 100 Kennungsbeispiele. Beispiele könnenidentityValueenthalten; schützen Sie Antwortdaten entsprechend.










