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: code 0 bedeutet Erfolg, message beschreibt das Ergebnis und data enthält die Nutzdaten. Die Stapelverarbeitung für Mitglieder-Schreibvorgänge hängt von der Operation ab: OVERRIDE wird erst ausgeführt, nachdem alle Stapel empfangen wurden; jeder Stapel von APPEND und REMOVE wird unabhängig angewendet. data.status und data.complete in 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" }'
              
              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"
  }'

            
Diesen Codeblock im schwebenden Fenster anzeigen

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

            
Diesen Codeblock im schwebenden Fenster anzeigen
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"} ] }'
              
              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"}
    ]
  }'

            
Diesen Codeblock im schwebenden Fenster anzeigen

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

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

            
Diesen Codeblock im schwebenden Fenster anzeigen
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; siehe 55214). Die Antwort liefert Zählungen und bis zu 100 Kennungsbeispiele. Beispiele können identityValue enthalten; schützen Sie Antwortdaten entsprechend.

Icon Solid Transparent White Qiyu
Vertrieb kontaktieren