Nachbuchungsanfragen per API abrufen und bearbeiten (V6-REST-API)
Über die V6-REST-API können Sie Nachbuchungsanfragen Ihrer Publisher automatisiert abrufen, prüfen, annehmen, ablehnen und bearbeiten. Die API bietet dieselben Funktionen wie das Nachbuchungstool in der Oberfläche. Jede Entscheidung, die Sie per API treffen, erscheint dort ebenfalls und wird in der Historie der Anfrage mit Zeitpunkt und Benutzer protokolliert.
1. Zugang
Basis-URL
| Rolle | Basis-URL |
|---|---|
| Advertiser-Login | https://<Ihre-Domain>/ws/V6/advertiser/REST/ |
| Admin-Login (Netzwerkbetreiber) | https://<Ihre-Domain>/ws/V6/admin/REST/ |
<Ihre-Domain> ist die Domain Ihrer Installation, also dieselbe Adresse, unter der Sie sich in der Oberfläche anmelden.
Authentifizierung
Jeder Aufruf braucht drei HTTP-Header:
| Header | Wert |
|---|---|
X-Auth-ID |
ID Ihres Benutzers bzw. Advertiser-Logins |
X-Auth-Token |
API-Token dieses Benutzers |
X-Network-ID |
1 |
Wo Sie den Token finden: Im Menü unter API → Daten-API. Dort wird Ihr API-Token angezeigt.
Berechtigung
Der Benutzer braucht das Recht Nachbuchungstool (bookingrequests_tool). Zum Abrufen genügt Leserecht, für Entscheidungen und Änderungen ist Lese- und Schreibrecht nötig. Die API arbeitet immer mit genau den Rechten des Benutzers, dessen Token Sie verwenden. Ein Advertiser-Login sieht nur die Nachbuchungen seiner eigenen Kampagnen.
2. Endpunkte im Überblick
| Methode | Pfad | Zweck |
|---|---|---|
GET |
Bookingrequests |
Liste der Nachbuchungsanfragen (mit Filtern), optional als CSV |
GET |
Bookingrequests/{id} |
eine Anfrage mit Dubletten, Gutschein-Prüfung, Trigger-Liste und Historie |
POST |
Bookingrequests |
Aktionen: annehmen, ablehnen, Trigger zuweisen, Provisionsvorschau, CSV-Import |
PUT |
Bookingrequests/{id} |
eine Anfrage bearbeiten (Trigger, Warenkorbwert, Sale/Lead, Provision) |
GET / PUT / POST / DELETE |
Bookingrequesthints |
Hinweise für Publisher (Text und Screenshots) pflegen |
Die vollständige technische Beschreibung mit allen Feldern finden Sie in der OpenAPI-/Swagger-Dokumentation unter https://<Ihre-Domain>/ws/docs/v6. Dort melden Sie sich mit Login-ID und Token an.
3. Nachbuchungsanfragen abrufen
curl "https://<Ihre-Domain>/ws/V6/advertiser/REST/Bookingrequests?params[state]=open¶ms[limit]=200" \
-H "X-Auth-ID: <ID>" \
-H "X-Auth-Token: <API-TOKEN>" \
-H "X-Network-ID: 1"
Filter
| Parameter | Werte | Bedeutung |
|---|---|---|
params[state] |
open, accepted, rejected, all (auch als Liste, z. B. open,rejected) |
offen (wartet auf Entscheidung), angenommen, abgelehnt, alle |
params[date_field] |
request (Standard), order |
worauf sich from/to beziehen: Eingang der Anfrage oder Kaufdatum |
params[from], params[to] |
YYYY-MM-DD |
Zeitraum |
params[search] |
Text | Order-ID, Bestellnummer (auch Teil), Publisher-ID, Projekt-ID oder Anfrage-Nr. |
params[campaign_id] |
ID oder Liste | nur bestimmte Kampagnen (Programme) |
params[publisher_id] |
ID oder Liste | nur bestimmte Publisher |
params[project_id] |
ID oder Liste | nur bestimmte Publisher-Projekte |
params[request_id] |
ID oder Liste | nur bestimmte Anfragen (hochgeladene Dateien) |
params[duplicates] |
only, none |
nur Dubletten / keine Dubletten |
params[voucher] |
with |
nur Anfragen mit Gutscheincode |
params[sort] |
request_timestamp (Standard), order_timestamp, turnover, commission, id |
Sortierfeld |
params[dir] |
desc (Standard), asc |
Sortierrichtung |
params[limit] |
Standard 50, höchstens 1000 |
Anzahl je Seite |
params[offset] |
Standard 0 |
Blättern |
params[format] |
json (Standard), csv |
csv liefert alle passenden Zeilen als CSV-Text im Feld csv |
Jede Zeile enthält Hinweise (warnings), die Ihnen bei der Entscheidung helfen:
| Hinweis | Bedeutung |
|---|---|
duplicate |
Es gibt bereits eine Transaktion mit derselben Bestellnummer, demselben Trigger und derselben Kampagne |
voucher_unknown |
Gutscheincode ist beim Programm nicht hinterlegt |
voucher_other_publisher |
Gutscheincode ist einem anderen Publisher zugeordnet |
voucher_expired |
Gutscheincode war zum Kaufzeitpunkt nicht gültig |
voucher_used |
Gutscheincode wurde bereits für eine andere Bestellung genutzt |
commission_changed |
Die neu berechnete Provision weicht von der angefragten ab |
commission_rule_missing |
Für diesen Trigger ist keine Provision hinterlegt |
Trigger einer Kampagne abfragen
curl "https://<Ihre-Domain>/ws/V6/advertiser/REST/Bookingrequests?params[view]=triggers¶ms[campaign_id]=1" \
-H "X-Auth-ID: <ID>" -H "X-Auth-Token: <API-TOKEN>" -H "X-Network-ID: 1"
Eine einzelne Anfrage
curl "https://<Ihre-Domain>/ws/V6/advertiser/REST/Bookingrequests/123456" \
-H "X-Auth-ID: <ID>" -H "X-Auth-Token: <API-TOKEN>" -H "X-Network-ID: 1"
Neben den Grunddaten liefert die Detailansicht:
- Dubletten: bestehende Transaktionen mit derselben Bestellnummer, demselben Trigger und derselben Kampagne, unabhängig vom Publisher,
- Gutschein-Prüfung: ob der Code unbekannt ist, einem anderen Publisher gehört, zum Kaufzeitpunkt ungültig war oder schon eingelöst wurde,
- die verfügbaren Trigger der Kampagne,
- die Historie aller Änderungen.
Diese Prüfungen sind Hinweise für Ihre Entscheidung. Sie blockieren nichts.
4. Annehmen, ablehnen, Trigger zuweisen
Alle Aktionen laufen über POST Bookingrequests mit einem JSON-Body. In order_ids können Sie mehrere Anfragen auf einmal übergeben.
Annehmen
curl -X POST "https://<Ihre-Domain>/ws/V6/advertiser/REST/Bookingrequests" \
-H "X-Auth-ID: <ID>" -H "X-Auth-Token: <API-TOKEN>" -H "X-Network-ID: 1" \
-H "Content-Type: application/json" \
-d '{ "action": "accept", "order_ids": [123456, 123457], "status": 1 }'
status |
Ergebnis |
|---|---|
0 |
übernommen als offene Transaktion |
1 |
übernommen als bestätigte Transaktion |
Beim Annehmen wird die Provision nach den Kampagneneinstellungen zum Kaufzeitpunkt neu berechnet. Das gilt nicht, wenn sie vorher manuell überschrieben wurde (siehe Abschnitt 5).
Ablehnen
curl -X POST "https://<Ihre-Domain>/ws/V6/advertiser/REST/Bookingrequests" \
-H "X-Auth-ID: <ID>" -H "X-Auth-Token: <API-TOKEN>" -H "X-Network-ID: 1" \
-H "Content-Type: application/json" \
-d '{ "action": "reject", "order_ids": [123458], "reject_code": "already_booked", "reason": "Bestellung bereits über Partner X getrackt" }'
Ein Ablehnungsgrund (reject_code) ist Pflicht:
reject_code |
Bedeutung |
|---|---|
already_booked |
bereits vorhanden / schon gebucht |
cancelled |
Bestellung storniert |
other_channel |
anderer Kanal |
no_valid_sale |
kein valider Sale |
other |
Sonstiges (dann ist reason als Freitext Pflicht) |
Der Publisher sieht Grund und Text.
Trigger zuweisen (mehrere Anfragen derselben Kampagne)
{ "action": "trigger", "order_ids": [123456, 123457], "trigger_id": 2 }
Provisionsvorschau (ohne zu speichern)
{ "action": "preview", "order_id": 123456, "trigger_id": 2, "turnover": 89.90 }
Die Vorschau liefert die Provision, die sich mit diesem Trigger und Warenkorbwert ergeben würde. Mit "lead": true wird sie für einen Lead ohne Warenkorbwert berechnet. Für die Vorschau genügt Leserecht.
Die Aktionen accept, reject und trigger liefern je Order ein eigenes Ergebnis. So sehen Sie, welche Orders verarbeitet wurden und welche nicht.
5. Eine Anfrage bearbeiten
curl -X PUT "https://<Ihre-Domain>/ws/V6/advertiser/REST/Bookingrequests/123456" \
-H "X-Auth-ID: <ID>" -H "X-Auth-Token: <API-TOKEN>" -H "X-Network-ID: 1" \
-H "Content-Type: application/json" \
-d '{ "trigger_id": 1, "turnover": 79.90 }'
| Feld | Bedeutung |
|---|---|
trigger_id |
Trigger/Aktion ändern |
turnover |
Warenkorbwert ändern |
lead |
als Lead statt Sale behandeln |
commission_manual + commission |
Provision manuell überschreiben (für Sonderfälle) |
Eine manuell überschriebene Provision wird markiert und beim Annehmen nicht neu berechnet.
6. Entscheidungen gesammelt per CSV übergeben
Viele Entscheidungen auf einmal können Sie auch als CSV übergeben. Das Format ist dasselbe wie beim Import im Nachbuchungstool:
| Spalte | Inhalt |
|---|---|
order_id |
ID der Nachbuchungsanfrage |
action |
accept, reject oder trigger |
status |
bei accept: 0 oder 1 |
reject_code, reason |
bei reject |
trigger_id |
bei trigger |
{ "action": "import", "content": "order_id;action;status;reject_code;reason;trigger_id\n123456;accept;1;;;\n123458;reject;;cancelled;;", "apply": true }
Ohne apply (Standard false) wird die Datei nur geprüft. Übernommen wird erst ein Aufruf mit "apply": true. Wir empfehlen, immer zuerst einen Prüflauf zu machen.
7. Hinweise für Publisher pflegen
Über Bookingrequesthints (GET / PUT / POST / DELETE) pflegen Sie den Hinweistext mit bis zu sechs Screenshots. Publisher sehen ihn beim Einreichen einer Nachbuchung, zum Beispiel mit der Angabe, wo die Bestellnummer steht oder welche Daten nicht mitgeschickt werden sollen. Es gibt einen allgemeinen Hinweis für alle Kampagnen und optional einen eigenen je Kampagne, der dann Vorrang hat.
8. Benachrichtigung bei neuen Anfragen
Unabhängig von der API erhalten Sie bei jeder neuen Nachbuchungsanfrage eine E-Mail an Ihre Kontaktadresse. Sie enthält Kampagne, Publisher, Anzahl, Warenkorbwert, mögliche Dubletten, Gutschein-Hinweise und die Zahl aller offenen Anfragen. Die Mail eignet sich gut als Auslöser für einen API-Abruf. Alternativ fragen Sie die API regelmäßig ab, zum Beispiel einmal pro Stunde mit params[state]=open.
9. Typischer Ablauf einer Integration
- Abrufen:
GET Bookingrequests?params[state]=open - Abgleichen: Bestellnummer und Warenkorbwert mit Ihrem Shop- oder ERP-System vergleichen. Optional die Detailansicht
GET Bookingrequests/{id}für Dubletten und Gutscheine nutzen. - Korrigieren (optional):
PUT Bookingrequests/{id}bei abweichendem Warenkorbwert oder Trigger. - Entscheiden:
POST Bookingrequestsmitaccept(Status 0 oder 1) bzw.rejectund Grund.
10. Fehlercodes
| HTTP | Bedeutung |
|---|---|
400 |
Eingabe ungültig; die Antwort nennt den Grund |
403 |
Zugangsdaten falsch, fehlendes Recht „Nachbuchungstool“ oder Funktion für die Installation nicht freigeschaltet |
404 |
Anfrage nicht gefunden bzw. nicht für diesen Zugang sichtbar |
405 |
Methode nicht unterstützt: Nachbuchungen werden abgelehnt (action: reject), nicht gelöscht |
Fehlerantworten haben immer einen JSON-Body mit error: true und einer Meldung in msg. Bei ungültigen Zeilen steht zusätzlich die Liste errors dabei.
Bei Fragen zur Einrichtung wenden Sie sich gern an unseren Support.