Ein Händler verkauft über einen Marktplatz und pflegt daneben eine Warenwirtschaft. Beide Systeme halten sich für führend. Das Ergebnis kennt jeder, der es erlebt hat: Bestände, die hin- und herspringen, Preise, die eine Nacht später wieder alt sind, und ein Einzelstück, das zweimal verkauft wird.
Der Commerce-Vertrag setzt deshalb bewusst eine Stufe vor die Übertragung: Bevor überhaupt geschrieben wird, legt ein Synchronisationsplan fest, wer schreibt; je Verkaufskonto, Marktgebiet, optionalem Angebot und Fachfluss ist höchstens eine aktive Schreibzuweisung zulässig. Erst danach läuft eine Vorschau, und erst eine ausdrückliche Freigabe macht daraus eine Änderung.
| Fläche | Rollen |
|---|---|
| Commerce | Teilehandel, Plattform und Marktplatz, Softwarehaus |
Was dieser Fall voraussetzt
- Ein autorisiertes Verkaufskonto. Die Verbindung wird mit einem Berechtigungsnachweis angelegt; Zugangsdaten des Kanals werden nicht offengelegt und nicht durchgereicht.
- Eine Entscheidung, welches System führt. Diese Frage ist kaufmännisch, nicht technisch. Der Vertrag erzwingt nur, dass sie beantwortet wird.
- Bereitschaft, den Trockenlauf zu lesen. Eine Vorschau, die niemand ansieht, ist ein Verzicht auf die einzige Gelegenheit, folgenlos zu scheitern.
- Eine Idempotenzkennung je schreibendem Aufruf. Ein wiederholter Aufruf darf keine zweite Wirkung haben.
Der Ablauf
Die Tabelle nennt je Stufe den zuständigen Aufruf und das, was danach vorliegt. Die Begründung, warum die Stufe nicht übersprungen werden kann, steht darunter.
| Stufe | Aufruf | Was danach vorliegt |
|---|---|---|
| Funktionsumfang lesen | GET /commerce/v1/capabilities | Je Kanal supportLevel, flows und ob Reservierungen getragen werden |
| Verbindung anlegen | POST /commerce/v1/connections | authorizationProof und ownershipMode; Zugangsdaten werden nie offengelegt |
| Zuständigkeit festlegen | POST /commerce/v1/sync-plans | writerAssignments: höchstens eine aktive Schreibzuweisung je Verkaufskonto, Marktgebiet, optionalem Angebot und flow; conflictPolicy regelt Konflikte |
| Trockenlauf fahren | POST /commerce/v1/sync-runs | mode als Vorschau; counts nennt read, changed, rejected und conflicted |
| Freigeben | POST /commerce/v1/sync-runs/{syncRunId}/approval | decision, previewRevision und expectedRevision — freigegeben wird die geprüfte Vorschau, nichts anderes |
Warum jede Stufe nötig ist
- Den Funktionsumfang lesen.
GET /commerce/v1/capabilitiesnennt je KanalsupportLevel,flowsund ob Reservierungen getragen werden. Diese Stufe klärt vor jeder Arbeit, was der Kanal überhaupt kann — eine Anbindung gegen eine nicht unterstützte Funktion scheitert sonst spät und teuer. - Die Verbindung anlegen.
POST /commerce/v1/connectionsnimmtchannelId,channelAccountReference,marketAreaReference,authorizationProofundownershipMode. Die kanalgebundenen Details bleiben hinter einer privaten Übersetzungsgrenze; öffentliche Kennungen sind undurchsichtig. - Die Zuständigkeit festlegen.
POST /commerce/v1/sync-plansist die entscheidende Stufe:writerAssignmentslässt je Verkaufskonto, Marktgebiet, optionalem Angebot undflowhöchstens eine aktive Schreibzuweisung zu,conflictPolicyregelt den Streitfall, unddryRunRequiredkann den Trockenlauf verbindlich machen. - Trocken laufen lassen.
POST /commerce/v1/sync-runsmit dem Vorschaumodus liefertcountsmitread,changed,rejectedundconflicted. Vier Zahlen, die vor dem ersten echten Schreiben sagen, was passieren würde. - Freigeben.
POST /commerce/v1/sync-runs/{syncRunId}/approvalnimmtdecision,previewRevisionundexpectedRevision; alle drei sind Pflichtfelder. Freigegeben wird also genau die geprüfte Vorschau — nicht ein inzwischen veränderter Stand.
curl -X POST \
-H 'X-Api-Key: <API_KEY>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: lauf-2026-09-12-01' \
-d '{"syncPlanId":"<syncPlanId>","mode":"preview"}' \
'https://commerce-preview.invalid/commerce/v1/sync-runs'Was am Ende vorliegt
Am Ende steht eine Verbindung, bei der der Plan festhält, wer schreibt, und eine erste Übertragung, die vor der Freigabe als Vorschau gelesen wurde. Dass der Bestand dadurch nicht mehr hin und her springt, sichert der Vertrag nicht zu: Handarbeit daneben im Kanal kann er nicht verhindern.
Wo das in der Dokumentation steht
Die verbindlichen Feldlisten, Fehlercodes und Beispielantworten stehen im OpenAPI-Vertrag dieser Fläche unter docs.tapinomahub.com (tapinoma-commerce). Alle Anwendungsfälle nach Fläche und Rolle geordnet: Übersicht der Anwendungsfälle.
Quellen und Rechtsgrundlagen
Häufige Fragen
Kann ich zwei Systeme schreiben lassen, wenn sie sich abstimmen?
Der Plan lässt je Verkaufskonto, Marktgebiet, optionalem Angebot und Fluss höchstens eine aktive Schreibzuweisung zu. Was sich abstimmen soll, lässt sich auf verschiedene Flüsse verteilen — etwa Bestand hier, Preis dort.
Muss ich immer trocken laufen?
Der Plan kennt dafür ein Feld. Wer es setzt, macht den Trockenlauf verbindlich; das ist bei Erstanbindungen und nach Planänderungen zu empfehlen.
Werden meine Marktplatz-Zugangsdaten weitergegeben?
Nein. Die Verbindung wird mit einem Berechtigungsnachweis angelegt, und kanalgebundene Details bleiben hinter einer privaten Grenze.
