Für Entwickler
Geprüft
Kurz gesagt
Abschnitt betitelt „Kurz gesagt“MitoOps hat eine öffentliche Schnittstelle in drei Formen über derselben normalisierten Datenschicht. Sie unterscheiden sich darin, wer fragt und was er darf:
| Form | Richtung | Was sie darf |
|---|---|---|
REST-API (/api/v1) |
Ihr Programm fragt | nur lesen: beantwortet ausschließlich GET, keine Operation ändert etwas |
MCP (/api/mcp) |
eine KI-Anwendung fragt | liest dieselben Daten und hat zusätzlich eng begrenzte Schreibzugriffe hinter sensiblen Berechtigungsbereichen, die ein Mensch ausdrücklich erteilt: automations:write (ein deaktivierter Automatisierungsentwurf und eine Revision einer laufenden Automatisierung, die ein Mensch veröffentlicht), coupons:write und coupons:delete (ein Rabattgutschein mit Vorschau und Bestätigung), affiliate:write (Verwaltung des Partnerprogramms: Partnerkonto, Portaltexte, Vorlagen, Kampagnen, Dokumentrichtlinie), affiliate:approve (Entscheidung über eine einzelne, benannte Provision; Auszahlungen bleiben in der Anwendung), availabilities:draft (ein Änderungsvorschlag für die Verfügbarkeitsliste, der erst in den Shop gelangt, wenn ein Mensch ihn in der Anwendung freigibt) und claims-settings:draft (ein Änderungsvorschlag für die Reklamationseinstellungen, der erst geschrieben wird, wenn ein Mensch ihn in der Anwendung freigibt). Außerdem claims-routes:draft, product-content:draft und category-content:draft: ein Vorschlag für den Rücktransport bei Reklamationen und für Produkt- und Kategorietexte, den ein Mensch in der Anwendung freigibt, oder der sofort geschrieben wird, wenn der Kunde für den Bereich bewusst das autonome Schreiben einschaltet. Sonst wird über MCP nichts angelegt oder geändert |
| Ausgehende Webhooks | MitoOps sendet an Sie | eine signierte Nachricht über ein Ereignis (Bestellung, Zahlung, Sendung, Lager, Rechnung, Reklamation) an Ihren Endpoint |
Die Schnittstelle stellt derzeit 130 MCP-Werkzeuge bereit (102 zum Lesen, 28 zum Schreiben hinter sensiblen Berechtigungen: Entwurf und Revision einer Automatisierung, Rabattgutscheine, Verwaltung des Partnerprogramms sowie Änderungsvorschläge zu Verfügbarkeiten, Reklamationseinstellungen und Rückversand sowie zu Produkt- und Kategorietexten, die erst ein Mensch durch Freigabe in der App übernimmt, sofern der Kunde für den Bereich nicht bewusst das autonome Schreiben einschaltet), 101 REST-Endpunkte (alle nur lesend) und 32 Berechtigungsumfänge, davon 13 sensible, über 19 Datenbereiche. Die Zahlen entstehen beim Erstellen dieser Seite aus dem Katalog der App und werden nicht von Hand geschrieben.
Was Sie über REST und MCP lesen können: Shops, Bestellungen, Produkte und Kategorien, Lagerbestand mit Bewegungsverlauf, Rechnungen und Gutschriften, Sendungen und Zustellstatistik, Besucherzahlen und Kanäle, Finanzberichte und Verkäufe, das Kundenverzeichnis und die Kundenanalyse in Pseudonymen, Lieferanten, Reklamationen mit Statistik, das Partnerprogramm, Automatisierungen, die Verfügbarkeitslisten der Shops, Webhook-Endpoints und den Tarif des Kontos mit seinen Limits.
REST: nur lesen
Abschnitt betitelt „REST: nur lesen“Die Adresse ist /api/v1 auf der Domain Ihrer Anwendung. Aufrufe, Parameter, Antwortform, Zeiträume und Paginierung sind in der REST-Schnittstelle beschrieben. Die maschinenlesbare Beschreibung liegt unter /api/v1/openapi.json hinter demselben Schlüssel; ein angemeldeter Mensch kann sie auch aus der Ansicht Einstellungen → API & MCP öffnen. Die Beschreibung entsteht aus derselben Quelle wie die Schnittstelle und kann daher nicht von ihr abweichen.
Alles außer GET erhält 405, noch bevor der Server den Schlüssel überhaupt ansieht. Das ist keine vorübergehende Einschränkung: REST v1 hat keine schreibenden Aufrufe, und die Schreibzugriffe von MCP wurden bewusst nicht aufgenommen. Einen Änderungsvorschlag für Verfügbarkeiten können Sie über REST nur lesen (seinen Status); anlegen lässt er sich dort nicht.
MCP: Lesen und eng begrenzte Schreibzugriffe
Abschnitt betitelt „MCP: Lesen und eng begrenzte Schreibzugriffe“Die Adresse ist /api/mcp. MitoOps ist ein standardmäßiger Remote-MCP-Server (Model Context Protocol, ein offenes, herstellerunabhängiges Protokoll); verbinden kann sich jede Anwendung, die Remote-MCP über HTTP mit OAuth oder mit einem Zugriffsschlüssel unterstützt. Claude.ai ist ein im Produktivbetrieb geprüfter Client; die genauen Schritte stehen in der MCP-Schnittstelle.
MCP-Tools bauen auf denselben Fähigkeiten auf wie REST: Es ist keine zweite Schnittstelle mit eigenen Abfragen. Die Liste der Tools richtet sich nach den Berechtigungsbereichen des Schlüssels oder der Einwilligung: Ein Tool außerhalb des Berechtigungsbereichs existiert für die Anwendung nicht. Jedes Tool trägt Annotationen gemäß der Protokollrevision 2026-07-28 (readOnlyHint, destructiveHint, idempotentHint), sodass die KI-Anwendung weiß, ob es sich um einen Lese- oder einen Schreibzugriff handelt.
OAuth: Verbindung im Namen eines Menschen
Abschnitt betitelt „OAuth: Verbindung im Namen eines Menschen“Eine KI-Anwendung, die Remote-MCP mit OAuth unterstützt, verbindet sich nicht mit einem Schlüssel. Sie geben ihr die Adresse /api/mcp, die Anwendung schickt Sie zur Anmeldung bei MitoOps (einschließlich des zweiten Faktors), und auf dem Einwilligungsbildschirm wählen Sie aus, was sie lesen darf, welche Shops betroffen sind und welche Schreibzugriffe sie vornehmen darf (Automatisierungsentwürfe, Gutscheine, Verwaltung des Partnerprogramms, Entscheidungen über Provisionen, Änderungsvorschläge für Verfügbarkeiten). Ihr Passwort sieht die Anwendung nie.
Was übergeben wird, entscheidet der angemeldete Mensch, und nie mehr, als er selbst sehen darf. Wer kein Recht auf Einkaufspreise hat, kann es nicht weitergeben; wer Automatisierungen nicht bearbeiten darf, sieht den Berechtigungsbereich automations:write auf dem Einwilligungsbildschirm gar nicht. Eine OAuth-Einwilligung verbraucht keinen Zugriffsschlüssel aus dem Limit des Tarifs, erfordert aber einen Tarif mit API & MCP: Ohne ihn öffnet sich der Einwilligungsbildschirm nicht und nennt den Grund.
Die Einwilligung lässt sich jederzeit unter Einstellungen → API & MCP widerrufen, und alle daraus entstandenen Zugriffe enden im selben Moment.
Zugriffsschlüssel
Abschnitt betitelt „Zugriffsschlüssel“Für einen Server, der einen Server aufruft, oder für Ihr eigenes Programm:
- Öffnen Sie in der Anwendung Einstellungen → API & MCP und klicken Sie auf Neuer Schlüssel.
- Geben Sie einen Namen ein, an dem Sie den Schlüssel später erkennen.
- Wählen Sie Berechtigungsbereiche, Shops und Schnittstellen (REST, MCP oder beide).
- Wählen Sie die Gültigkeit und erstellen Sie den Schlüssel.
Der Schlüssel wird in einem Header übertragen; in der URL wird er bewusst nicht angenommen (URLs landen in Logs und im Browserverlauf):
Authorization: Bearer <Ihr Schlüssel>Berechtigungsbereiche
Abschnitt betitelt „Berechtigungsbereiche“Ein Schlüssel oder eine Einwilligung sieht nie mehr, als ihm oder ihr erteilt wurde. Die Tabelle wird aus dem Katalog der Anwendung abgeleitet:
| Berechtigungsumfang | Zugriff | Sensibel | Was er freigibt |
|---|---|---|---|
stores:read |
lesen | nein | die Liste der Shops mit ihrem Code |
orders:read |
lesen | nein | Bestellungen einschließlich Positionen; Adresse nur als Land und Ort, Beträge nur mit reports:read |
products:read |
lesen | nein | Produkte, Kategorien und den Verkaufspreis aus der Produktkarte |
invoices:read |
lesen | nein | Rechnungen mit Positionen, Gutschriften und Proformarechnungen |
shipping:read |
lesen | nein | Sendungen, Sendungsverfolgungsereignisse, Versanddienstleister (ohne Zugangsdaten) und Zustellstatistik |
analytics:read |
lesen | nein | Besucherzahlen, Kanäle, Suchergebnisse und die Abdeckung der Bestellungen durch das Tracking |
search-console:read |
lesen | nein | Leistung in der Google-Suche aus dem synchronisierten Archiv: Tage, Suchanfragen, Seiten, Länder und Geräte |
inventory:read |
lesen | nein | Lagerbestände und den Verlauf der Lagerbewegungen |
reports:read |
lesen | sensibel | Umsatz im Vergleich und nach Monaten, Werbung (Ausgaben, Budget, ROAS, Werbekostenanteil, CPA, MER), wann Bestellungen eingehen, Umsatzquellen; Finanzübersicht eines Zeitraums (Umsatz, MwSt., Kosten, Ergebnis), Verkäufe je Produkt, Leistung je Bestellung, Kunden als Pseudonyme und Beträge in der Sammelliste der Bestellungen |
purchasing:read |
lesen | sensibel | Lieferanten, ihre Angebote und Kostenbestandteile |
claims:read |
lesen | nein | Reklamationen und Retouren mit Verknüpfungen zu Bestellung, Gutschrift und Rücksendung, Zeitachse und versendete E-Mails des Falls; Statistik und Prozesse des Moduls |
automations:read |
lesen | nein | den Katalog der Auslöser und Aktionen, die Liste der Automatisierungen, ihre Einstellungen, den Verlauf der Ausführungen und die Prüfung von Entwürfen |
automations:write |
schreiben | sensibel | Anlegen oder Bearbeiten eines deaktivierten Automatisierungsentwurfs und Vorschlag einer Änderung an einer aktivierten Automatisierung (Revision); einen Entwurf aktivieren oder eine Revision veröffentlichen kann nur ein Mensch in der Anwendung, die laufende Automatisierung ändert sich nicht |
webhooks:read |
lesen | nein | den Ereigniskatalog, Endpoints ohne Secret und das Zustellungsprotokoll ohne Inhalte |
account:read |
lesen | nein | den Tarif, aktivierte Funktionen und Limits mit aktueller Nutzung |
affiliate:read |
lesen | nein | das Partnerprogramm: Übersicht, Partner, Kampagnen, Rabattcodes, Conversions, Auszahlungen, Statistik, Einstellungen, Dokumente, öffentliches Portal, E-Mail-Vorlagen, Hilfeartikel und Code-Anfragen; Kontaktdaten der Partner nur mit personal-data:read, Bank- und Steuerdaten nie |
affiliate:write |
schreiben | sensibel | Verwaltung des Partnerprogramms: Entscheidung über ein Partnerkonto (freigeben, ablehnen, sperren), Bearbeitung von Code-Anfragen, nicht finanzielle Programmeinstellungen, Portaltexte, Hilfeartikel, E-Mail-Vorlagen, Kampagnen und Dokumentrichtlinie; die Entscheidung über Provisionen hat einen eigenen Berechtigungsbereich, Auszahlungen bleiben in der Anwendung |
affiliate:approve |
schreiben | sensibel | Entscheidung über eine Provision des Partnerprogramms nach Conversion-ID: freigeben, ablehnen oder stornieren (Ablehnung und Stornierung mit Grund, der Partner erhält eine E-Mail); eine ausgezahlte Provision wird nie zurückgesetzt, Sammelfreigabe und Auszahlungen gibt es von außen nicht |
customers:read |
lesen | nein | das Kundenverzeichnis: Pseudonym, Shops, Land, Sprache, Anzahlen und Daten über die gesamte Kundenbeziehung; Name, Firma, E-Mail und Telefon nur mit personal-data:read, Umsatz und LTV nur mit reports:read |
coupons:read |
lesen | nein | die Rabattgutscheine des Shops mit Rabatthöhe und Gültigkeit, die Unterstützung durch die Plattform, den Aktivierungslink und seine Bereitschaft |
coupons:write |
schreiben | sensibel | Anlegen eines Gutscheins in ausgewählten Shops (ein vorhandener mit anderen Parametern wird ohne ausdrückliche Zustimmung nicht überschrieben) |
coupons:delete |
schreiben | sensibel | unwiderrufliches Löschen eines Gutscheins im ausgewählten Shop nach einer Vorschau und ausdrücklicher Bestätigung; ein Gutschein mit einer aktiven Abhängigkeit (AI Mailing, Anmeldefenster, geplante Kampagne, Partner) wird nicht gelöscht |
chatbot:read |
lesen | nein | Statistik des Web-Chatbots für einen Zeitraum: Anzeigen und Klicks der Sprechblase (Klickrate), Chat-Öffnungen einschließlich ihres Auslösers, Anzahl der Unterhaltungen und Nachrichten, Ergebnisse, Kundenbewertungen, der Trichter der Newsletter-Anmeldung und eine deterministische Auswertung der Gesprächsthemen (Anteile, Produkte, Kandidaten für Wissenslücken); nur Summen |
chatbot-conversations:read |
lesen | sensibel | Unterhaltungen von Kunden mit dem Web-Chatbot: eine Liste mit der ersten Frage und Transkripte mit den Quellen der Bot-Antworten; der Kunde ist nur ein zufälliger Schlüssel der Unterhaltung, E-Mail, Telefon und IBAN im Text nur mit personal-data:read, sonst durch einen Platzhalter ersetzt; nur innerhalb der Aufbewahrungsfrist des Shops |
availabilities:draft |
schreiben | sensibel | ein Änderungsvorschlag für die Verfügbarkeitsliste des Shops (anlegen, bearbeiten, löschen) mit Vorschau; in den Shop gelangt er erst, wenn ein Mensch mit der passenden Berechtigung ihn in der Anwendung freigibt, sonst läuft er nach 24 Stunden ab; er ändert weder, welche Verfügbarkeit ein Produkt hat, noch den Lagerbestand |
claims-settings:read |
lesen | nein | E-Mail- und Dokumentvorlagen der Reklamationen, Moduleinstellungen, Tags, Rückversand und das Formular im Shop; ohne Zugriffstokens |
claims-settings:draft |
schreiben | sensibel | ein Änderungsvorschlag für Reklamationsprozesse, Status, Tags und Vorlagentexte mit Vorschau; geschrieben wird er erst, wenn ein Mensch mit der passenden Berechtigung ihn in der Anwendung freigibt, sonst läuft er nach 72 Stunden ab; gelöscht wird nichts |
claims-routes:draft |
schreiben | sensibel | ein Vorschlag, eine Rückversandroute anzulegen, zu ändern, ein- oder auszuschalten, geprüft wie auf dem Bildschirm; geschrieben wird er durch Freigabe in der App oder sofort, wenn der Kunde für den Bereich bewusst das autonome Schreiben eingeschaltet hat; löscht nie eine Route |
product-content:read |
lesen | nein | Beschreibung, Kurzbeschreibung und SEO-Texte eines Produkts direkt aus dem Shop, mit Hash und Schreibbarkeit jedes Feldes |
product-content:draft |
schreiben | sensibel | vorgeschlagene neue Produkttexte (bis zu 30 auf einmal), nur Inhaltsfelder, nie Preis, Bestand, Code oder EAN; geschrieben durch Freigabe oder sofort bei bewusst eingeschaltetem autonomem Schreiben |
category-content:read |
lesen | nein | obere und untere Beschreibung sowie SEO-Texte einer Kategorie, mit Hash und Schreibbarkeit je nach Shop-Plattform |
category-content:draft |
schreiben | sensibel | vorgeschlagene neue Kategorietexte (bis zu 30 auf einmal), nur Felder, die die Shop-Plattform schreiben kann; geschrieben durch Freigabe oder sofort bei bewusst eingeschaltetem autonomem Schreiben |
Sensible Berechtigungsbereiche sind weder beim Ausstellen eines Schlüssels noch auf dem Einwilligungsbildschirm vorausgewählt: Ein Mensch muss sie bewusst anhaken. purchase-prices:read und personal-data:read haben kein eigenes Tool; sie entscheiden über Felder in den Antworten der anderen. Ein fehlendes Feld ist nicht null, es fehlt.
Berechtigungsbereiche sind eine öffentliche Zusage: Sie ändern sich nur abwärtskompatibel, und ein früher ausgestellter Berechtigungsnachweis erbt einen neuen Berechtigungsbereich nicht (die Berechtigungsbereiche sind darin namentlich eingetragen). Deshalb erhielten ein älterer Schlüssel und eine ältere Einwilligung keine personenbezogenen Daten, als diese am 2. 9. 2026 einen eigenen Berechtigungsbereich bekamen, und sie erhalten auch das Schreiben von Entwürfen nicht: Dafür braucht es eine neue Einwilligung oder einen neuen Schlüssel.
Einem bestehenden Schlüssel lässt sich ein neuer Bereich auch ohne Austausch des Schlüssels hinzufügen: Einstellungen → API & MCP → Bereiche bearbeiten. Der Schlüsselwert bleibt gleich, die Integration, die ihn nutzt, läuft weiter und erhält den neuen Bereich ab der nächsten Anfrage. Die Änderung nimmt eine Person mit dem Recht zur Schlüsselverwaltung vor; Tarif und sensible Bereiche werden wie bei der Ausstellung geprüft.
Personenbezogene Daten
Abschnitt betitelt „Personenbezogene Daten“Die Schnittstelle gibt Betriebsdaten aus, personenbezogene Daten nur mit dem Berechtigungsbereich personal-data:read:
- Bestellungen und Reklamationen liefern ohne ihn nur Land und Ort, nicht Name, E-Mail, Telefon oder Straße.
- Das Kundenverzeichnis (
customers:read) liefert allein nur Pseudonym, Shops, Land, Sprache, Anzahlen und Daten. Name, Firma, E-Mail, Telefon und das Marketing-Geschlecht kommen erst mitpersonal-data:readhinzu, Umsatz und LTV erst mitreports:read: Ein Feld, für das Sie keinen Berechtigungsbereich haben, wird entfernt, nicht auf null gesetzt. - Die Kundenanalyse (
customers/performance) enthält überhaupt keine personenbezogenen Daten: Der Kunde ist ein Pseudonym (ein Hash der E-Mail-Adresse), derselbe wiecustomerEmailHashauf Belegen und im Verzeichnis. - Kontaktdaten von Lieferanten und Partnern des Programms liegen hinter demselben Berechtigungsbereich.
- Unterhaltungen mit dem Web-Chatbot (
chatbot-conversations:read, sensibel) tragen nur einen zufälligen Schlüssel der Unterhaltung, ohne Name, E-Mail, IP oder Cookie. E-Mail, Telefon und IBAN, die der Kunde in den Text geschrieben hat, gibt erstpersonal-data:readaus; ohne ihn steht an ihrer Stelle ein Platzhalter. - Bank- und Steuerdaten von Partnern (IBAN, Firmen- und Steuernummern, Rechnungsdaten der Auszahlungen), interne Notizen, Passwörter und Secrets des zweiten Faktors werden nie ausgegeben: Kein Berechtigungsbereich öffnet sie.
- Webhooks senden Kennungen und Status, nicht den Inhalt der Bestellung oder Kundendaten.
Jeder Aufruf wird ohne Eingabewerte in das Prüfprotokoll geschrieben, nur mit den Feldnamen und einem Fingerabdruck.
Automatisierungen: der sichere Schreibzugriff auf Entwürfe
Abschnitt betitelt „Automatisierungen: der sichere Schreibzugriff auf Entwürfe“Ein KI-Assistent darf eine Automatisierung vorschlagen, er darf sie nicht aktivieren. Mit dem Berechtigungsbereich automations:write (sensibel, nie vorausgewählt, nur einem Menschen mit dem Recht angeboten, Automatisierungen zu bearbeiten):
automations_create_draftlegt einen Entwurf im Zustand deaktiviert an; die veröffentlichte Version, Auslöser und Ausführungen berührt er nicht;automations_update_draftbearbeitet nur einen Entwurf, den noch niemand veröffentlicht hat; ein Entwurf, der gerade im Editor der Anwendung bearbeitet wird, wird nicht überschrieben;- der Entwurf erscheint unter Automatisierungen wie jede andere angefangene Arbeit, und aktivieren, veröffentlichen oder ausführen kann ihn nur ein Mensch in der Anwendung mit dem Recht zur Freigabe;
automations_revision_create_draftschlägt eine Änderung an einer veröffentlichten, auch aktivierten Automatisierung als Revision vor; die laufende Version bleibt unverändert, bis ein Mensch die Revision in den Editor lädt und veröffentlicht (automations_revision_update_draft,automations_revision_discard_draft).
Die Werte von Feldern, die im Editor aus einer Liste gewählt werden (Bestellstatus, Versandart, Zahlungsart, Reklamationsstatus…), liefert automations_options in der Form, die der Editor speichert. Ein Wert, der im Shop nicht existiert, und Platzhaltertext wie DOPLNIT_… sind Validierungsfehler, kein Erfolg.
Das Anlegen ist über clientRequestId idempotent, eine Bearbeitung erfordert expectedVersion, und beide erfordern die catalogVersion aus automations_catalog: Ein veralteter Katalog ist ein Konflikt, kein stiller Schreibzugriff. Ein Entwurf, der auf einen unbekannten Auslöser, einen Shop außerhalb des Berechtigungsbereichs oder einen fremden Webhook-Endpoint verweist, wird nicht gespeichert. Einzelheiten in der MCP-Schnittstelle.
Verfügbarkeiten: ein Änderungsvorschlag, den ein Mensch freigibt
Abschnitt betitelt „Verfügbarkeiten: ein Änderungsvorschlag, den ein Mensch freigibt“Verfügbarkeiten sind die Einträge der Verfügbarkeitsliste eines bestimmten Shops, die der Shop neben einem Produkt anzeigt, zum Beispiel Auf Lager, Auf Bestellung oder Vorbestellung: ein Name, eine Beschreibung, Einlagerungs- und Lieferzeit in Stunden, eine Bedeutung für Google Shopping und eine Farbe. Sie sind kein Lagerbestand.
availabilities_listundGET /availabilities?market=(Berechtigungsbereichproducts:read) liefern die Liste eines Shops;marketist Pflicht. Das Feldmanageablegibt an, ob sich die Liste dieses Shops aus MitoOps ändern lässt, undreason, warum nicht:PLATFORMA(die Plattform kann es nicht),BEZ_ROZSIRENIA(einem WooCommerce-Shop fehlt das MitoOps-Plugin) oderPROSTREDIE(Schreibzugriffe auf Shops sind in dieser Umgebung abgeschaltet).availabilities_change_draft(nur MCP, sensibler Berechtigungsbereichavailabilities:draft) schreibt nichts in den Shop. Es prüft die Änderung, speichert sie als Vorschlag mit einer Gültigkeit von 24 Stunden und liefert eine Vorschau (jedes Feld vorher und nachher, Warnungen, Blockierungen), diedraftIdund eineapprovalUrl.- In den Shop gelangt der Vorschlag erst, wenn ein Mensch in der Anwendung unter Lager → Verfügbarkeiten → Verwaltung auf Genehmigen und schreiben klickt oder ihn ablehnt. Maßgeblich sind dabei die Rechte dieses Menschen zum Zeitpunkt des Klicks, nicht der Berechtigungsbereich des Schlüssels oder der Einwilligung. Weder ein Modell noch ein Zugriffsschlüssel kann ohne einen Menschen etwas in den Shop schreiben.
availabilities_draft_getundGET /availabilities/drafts/:draftId(Berechtigungsbereichproducts:read) liefern den Status des Vorschlags:pending,writing,executed,partial,failed,rejectedoderexpired.
Der Berechtigungsbereich availabilities:draft wird nur einem Menschen angeboten, der die Änderung auch freigeben dürfte (die Rechte, den Lagerabgleich zu verwalten und Produkte zu bearbeiten). Ein bestehender Schlüssel oder eine bestehende Einwilligung erbt ihn nicht. REST v1 bleibt nur lesend. Die Parameter des Vorschlags stehen in der MCP-Schnittstelle, die Freigabeansicht in der Anleitung Verfügbarkeiten.
Reklamationen: Einstellungen zum Lesen und ein Änderungsvorschlag
Abschnitt betitelt „Reklamationen: Einstellungen zum Lesen und ein Änderungsvorschlag“claims_settings(Berechtigungsbereichclaims:read) liefert die Prozesse mit IDs und Namen der Typen, Schritte und Status sowie die Tags; mit dem Berechtigungsbereichclaims-settings:readauch die Moduleinstellungen.claims_templatesundclaims_configuration(Berechtigungsbereichclaims-settings:read) liefern E-Mail- und Dokumentvorlagen (Betreff, Text, wann und ob sie automatisch versendet werden) und die übrigen Einstellungen: Tags, Felder, Rückversand und das Formular im Shop, ohne das Integrationstoken.claims_getträgt außerdem die Zeitachse des Falls, versendete E-Mails und Tags; den Text der Nachrichten nur mitpersonal-data:read.claims_config_change_draft(nur MCP, sensibler Berechtigungsbereichclaims-settings:draft) ändert die Einstellungen nicht. Es speichert einen Änderungsvorschlag für Prozesse, Status, Tags und Vorlagentexte für 72 Stunden mit Vorschau undapprovalUrl; ein Mensch mit dem Recht, die Einstellungen zu verwalten, schreibt ihn mit Freigeben und schreiben unter Reklamationen → Einstellungen, vollständig oder gar nicht. Den Status liefertclaims_config_draft_get.
Die Parameter stehen in der MCP-Schnittstelle.
Rückversand, Produkttexte und autonomes Schreiben
Abschnitt betitelt „Rückversand, Produkttexte und autonomes Schreiben“claims_routes(Berechtigungclaims-settings:readoder eine der Vorschlagsberechtigungen für Reklamationen) liefert Rückversandrouten, Empfängeradressen, Versandprofile mit IDs, Retourenkennzeichen und Reichweite sowie die Schlüssel der Falltypen.claims_routes_change_draft(nur MCP, sensible Berechtigungclaims-routes:draft) schlägt vor, eine Route anzulegen, zu ändern, ein- oder auszuschalten. Der Server prüft sie genau wie der Bildschirm: Profil mit aktivierter Retoure, Reichweite des Versanddienstleisters, vorhandene Adresse und Typen, kein negativer Preis und kein Konflikt mit einer eingeschalteten Route. Löschen einer Route über MCP gibt es nicht.products_content_getundGET /products/:code/content?market=(Berechtigungproduct-content:read) liefern Beschreibung, Kurzbeschreibung und SEO-Texte eines Produkts direkt aus dem Shop, jedes Feld mit Hash und der Angabe, ob die Plattform es schreiben kann.categories_content_getundGET /categories/:guid/content?market=(Berechtigungcategory-content:read) liefern dasselbe für eine Kategorie.products_content_change_draftundcategories_content_change_draft(nur MCP, sensible Berechtigungenproduct-content:draftundcategory-content:draft) schlagen neue Texte vor, bis zu 30 Einträge auf einmal. Sie akzeptieren nur Inhaltsfelder; Preis, Bestand, Verfügbarkeit, Code, EAN oder Name lassen sich so nicht ändern. HTML wird geprüft: kein Skript außer einem JSON-LD-FAQPage-Block, keinon…,javascript:oderiframe. Bei der Freigabe wird der Text mit dem aktuellen Stand des Shops verglichen; hat ihn inzwischen jemand geändert, wird nichts geschrieben (CHANGED_SINCE_DRAFT). Verändert der Shop den Text beim Speichern, sagt das Ergebnis es (MODIFIED_BY_PLATFORM). Freigegeben wird unter Lager → Produktänderungen. Auf WooCommerce wird ein Entwurf mit Skript (auch JSON-LD) oder Backslash blockiert (PLATFORM_STRIPS_SCRIPT,PLATFORM_STRIPS_BACKSLASH): WordPress entfernt sie beim Speichern und Kunden würden den Rest als Text sehen.products_content_policyundGET /product-content/policy?market=(Berechtigungproduct-content:read) sagen ohne Aufruf des Shops, was Ihr Schlüssel im jeweiligen Shop mit Texten tun darf: ob er lesen (readEnabled) und vorschlagen darf (draftEnabled, Vorschläge nur über MCP), welche Felder die Plattform schreibt (supportedFields; SEO-Felder auf WooCommerce nur mit SEO-Plugin), den Freigabemodus (approvalMode:human,autonomousoderdisabled) und ob ein Vorschlag automatisch geschrieben wird (autonomousWriteEnabled), Limits für Vorschläge und den Hash-Algorithmus (sha256). Ein pausierter Shop, eine nicht unterstützte Plattform oder ein nur lesender Shop-Schlüssel sindstatusundreasonin der Antwort, kein Fehler. Das Feldcategoryenthält dasselbe für Kategorien. Das FeldstructuredDatasagt, ob die Plattform strukturierte Daten in der Produktbeschreibung behält: auf WooCommerce nicht (NOT_SUPPORTED,PLATFORM_STRIPS_SCRIPT; strukturierte Daten verwaltet dort das Shop-Theme,THEME_MANAGED), auf Shoptet ja (einFAQPage-Block).- Autonomes Schreiben. Standardmäßig wird jeder Vorschlag (Reklamationseinstellungen und -routen, Produkt- und Kategorietexte) erst durch die Freigabe eines Menschen geschrieben. Ein Administrator kann es je Bereich unter Einstellungen → API & MCP → Schreiben per KI einschalten. Der Vorschlag wird dann sofort geschrieben, auf demselben Weg wie eine Freigabe, im Namen der Person, die der KI den Zugang erteilt hat, und nur wenn diese Person die Änderung gerade jetzt freigeben dürfte. Sonst wartet der Vorschlag und die Antwort sagt, warum. Jede Änderung des Modus wird protokolliert.
Bestehende Schlüssel und Zustimmungen erben die neuen Berechtigungen nicht; eine neue Zustimmung ist nötig.
Ausgehende Webhooks
Abschnitt betitelt „Ausgehende Webhooks“REST und MCP lesen auf Anfrage. Wenn Ihr System sofort von einem Ereignis erfahren soll (eine neue Bestellung, eine Zahlung, eine Statusänderung, eine Sendung, eine Zustellung, eine Lagerbewegung, eine Rechnung, eine Reklamation), abonniert es dieses über ausgehende Webhooks: MitoOps sendet an Ihren Endpoint einen kurzen Umschlag mit Kennungen, signiert mit HMAC-SHA256, mit Wiederholungen bei einem Fehlschlag und einem Zustellungsprotokoll. Die Details lädt das System anschließend über REST.
Abonnements legt ein Mensch in der Anwendung an, in derselben Ansicht wie die Schlüssel; über REST und MCP werden Endpoints nur gelesen (webhooks:read, ohne das Secret). Ein Endpoint lässt sich auch als Schritt einer Automatisierung verwenden. Einzelheiten unter Ausgehende Webhooks.
Kontolimits
Abschnitt betitelt „Kontolimits“API & MCP und Webhooks sind Teil jedes kostenpflichtigen Tarifs ab Start. Die Tarife unterscheiden sich in der Anzahl aktiver Schlüssel und Endpoints, nicht darin, was sich lesen lässt:
| Tarif | API & MCP | Aktive Zugriffsschlüssel | Webhook-Endpoints |
|---|---|---|---|
| Testversion | — | 0 | 0 |
| Einsteiger | — | 0 | 0 |
| Start | ja | 1 | 5 |
| Wachstum | ja | 2 | 20 |
| Pro | ja | 5 | 50 |
| Maßgeschneidert | ja | nach Vereinbarung | nach Vereinbarung |
Die Limits setzt der Server durch: Ein Versuch, einen Schlüssel oder Endpoint über das Limit hinaus hinzuzufügen, wird mit einer Erklärung abgelehnt. Das Ersetzen eines Schlüssels und das Austauschen des Secrets eines Endpoints verbrauchen keinen Platz. Ein Wechsel in einen niedrigeren Tarif widerruft bestehende Schlüssel und Endpoints nicht: Es lässt sich nur kein neuer anlegen, bis die Anzahl unter die neue Obergrenze sinkt. Eine Verbindung über OAuth verbraucht keinen Schlüssel.
Die aktuellen Werte für Ihr Konto einschließlich der Nutzung (aktive Automatisierungen, Ausführungen im laufenden Monat, E-Mails, Credits) liefert account_entitlements / GET /account/entitlements mit dem Berechtigungsbereich account:read. Die Antwort enthält nur Tarif, Funktionen und Limits, keine Rechnungsdaten. Die aktuelle Preisliste finden Sie unter mitoops.com/en/cennik.
Aufruflimits
Abschnitt betitelt „Aufruflimits“| Limit | Gemessen an | Wie viel |
|---|---|---|
| vor der Authentifizierung | der Adresse, von der aus Sie aufrufen | 300 Aufrufe / 60 s |
| nach der Authentifizierung | dem konkreten Schlüssel | 600 Aufrufe / 60 s |
Das erste verhindert das Erraten von Schlüsseln, das zweite gehört Ihnen allein und wird mit niemandem geteilt. Eine Überschreitung ergibt 429 mit den Headern RateLimit-*. Es ist keine Tarifgröße: Aufrufe werden nicht abgerechnet.
Eine Fehlerantwort hat immer dieselbe Form und trägt einen Code:
{ "error": { "code": "store_required", "message": "…", "requestId": "…" } }| Status | Code | Wann |
|---|---|---|
400 |
invalid_request |
ein Parameter entspricht nicht der Beschreibung (falsches Datum, umgekehrter Zeitraum, ungültiger Cursor) |
400 |
store_required |
ein Aufruf über Shop-Daten ohne market |
401 |
unauthorized |
fehlender, unbekannter, widerrufener oder ungültiger Schlüssel |
403 |
forbidden |
dem Schlüssel fehlt der erforderliche Berechtigungsbereich |
403 |
store_forbidden |
ein Shop außerhalb des Berechtigungsbereichs des Schlüssels |
404 |
not_found |
der Datensatz existiert nicht (auch dann, wenn er zu einem anderen Shop gehört) |
405 |
— | alles außer GET (REST) |
409 |
conflict |
das Schreiben eines Entwurfs ist auf eine andere Version, eine bereits verwendete clientRequestId oder einen geänderten Katalog gestoßen (MCP) |
429 |
rate_limited |
technisches Aufruflimit überschritten |
Der Grund für ein 401 wird nicht unterschieden: Der Unterschied würde demjenigen helfen, der Schlüssel errät. Geben Sie die requestId an, wenn Sie dem Support ein Problem melden. Über MCP kommt ein Fehler, den der Assistent beheben kann, als Tool-Ergebnis mit dem Kennzeichen isError; ein Protokollfehler als JSON-RPC-Fehler.
Beispiele
Abschnitt betitelt „Beispiele“# Bestellungen eines Zeitraums, seitenweisecurl -H "Authorization: Bearer <Ihr Schlüssel>" \ "https://<Ihre Adresse>/api/v1/orders?market=sk&from=2026-08-01&to=2026-08-31&limit=50"
# Zustellstatistik für Augustcurl -H "Authorization: Bearer <Ihr Schlüssel>" \ "https://<Ihre Adresse>/api/v1/shipping/stats?market=sk&from=2026-08-01&to=2026-08-31"
# Reklamationsstatistik für Augustcurl -H "Authorization: Bearer <Ihr Schlüssel>" \ "https://<Ihre Adresse>/api/v1/claims/statistics?market=sk&from=2026-08-01&to=2026-08-31"
# Tarif und Limits des Kontos mit Nutzungcurl -H "Authorization: Bearer <Ihr Schlüssel>" \ "https://<Ihre Adresse>/api/v1/account/entitlements"Fragen, die Claude.ai nach der Verbindung aus den Daten von MitoOps beantwortet: „Wie hoch war der Median der Zustellzeit bei DHL und GLS im August?“, „Wie viele Bestellungen kamen von ChatGPT?“, „Wie hoch ist die Marge von Produkt X im letzten Monat?“ (mit purchase-prices:read), „Wie viele Reklamationen sind überfällig?“, „Schlage eine Automatisierung vor, die drei Tage nach einer unbezahlten Bestellung eine Erinnerung sendet“ (mit automations:write entsteht ein deaktivierter Entwurf), „Benenne im SK-Shop die Verfügbarkeit Auf Bestellung in Innerhalb von 5 Tagen um“ (mit availabilities:draft entsteht ein Vorschlag, den Sie durch Freigabe in der Anwendung schreiben).
Sicherheit
Abschnitt betitelt „Sicherheit“- Mandantentrennung. Der Mandant ergibt sich ausschließlich aus dem Berechtigungsnachweis; jeder Mandant hat eine eigene Datenbank.
- Der Shop-Umfang ist die Schnittmenge aus der Liste im Berechtigungsnachweis und den Shops, die in diesem Moment verbunden sind. Bei Aufrufen über die Daten eines einzelnen Shops ist
marketPflicht: Ein fehlender Shop ergibt400, ein Shop außerhalb des Berechtigungsbereichs403. - Die Rechte des Menschen. Der Einwilligungsbildschirm bietet nur Berechtigungsbereiche an, die der angemeldete Mensch selbst hat; es entscheidet der eigene Berechtigungssatz des Kontos.
- Die Grenzen jedes Schreibzugriffs setzt der Dienst durch, nicht eine Annotation: Ein Automatisierungsentwurf entsteht immer deaktiviert, eine veröffentlichte Automatisierung wird über MCP nie geändert, und ein Änderungsvorschlag für Verfügbarkeiten schreibt nichts in den Shop, bis ein Mensch ihn in der Anwendung freigibt.
- Gültigkeit und Widerruf. Ein OAuth-Zugriffstoken gilt eine Stunde, ein Aktualisierungstoken 30 Tage; eine widerrufene Einwilligung stoppt jedes daraus entstandene Token. Schlüssel lassen sich sofort widerrufen oder ersetzen.
- Prüfprotokoll. Jeder Aufruf wird mit dem Namen der Fähigkeit, der Schnittstelle und einem Fingerabdruck der Eingabe aufgezeichnet, ohne Werte.
- Worauf Sie sich nicht verlassen können: nicht öffentliche Adressen der Anwendung (die Schnittstelle ist
/api/v1und/api/mcp, sonst nichts), direkter Datenbankzugriff (gibt es nicht) und Zugangsdaten (die Schnittstelle gibt sie nie aus).