REST-API-Referenz

Alle Pfade sind relativ zu https://shopify.workflow-transactional-email.app. Jeder Endpunkt außer dem Index benötigt Authorization: Bearer fak_... - siehe Authentifizierung und API-Schlüssel.

Antworten sind im JSON-Format. Fehler haben durchgängig dieselbe Struktur:

json
{ "error": "Invalid or missing API key" }

Index und Identität

Methode Pfad Level Zweck
GET /api/v1 none API-Index. Bestätigt, dass die API läuft, und meldet die aktuelle Version
GET /api/v1/me read Prüft, ob ein Schlüssel funktioniert, und zeigt dessen Zugriffsebene

Der Index benötigt keinen Schlüssel und ist daher ein sicherer Health-Check, den ein Monitor ansprechen kann.

E-Mail-Layouts

Methode Pfad Level Zweck
GET /api/v1/email-templates read E-Mail-Layouts auflisten
GET /api/v1/email-templates/:id read Ein Layout abrufen, einschließlich Betreff, Vorschautext und gerendertem Inhalt

Akzeptiert page (Standard 1), limit (Standard 25, maximal 100) und q zur Suche nach Namen.

Nur lesbar. Layouts werden in der App erstellt und bearbeitet.

E-Mail-Absender

Methode Pfad Level Zweck
GET /api/v1/smtp-configs read SMTP-Absender auflisten
GET /api/v1/senders read Verbundene Postfächer auflisten (Microsoft 365, Google)

SMTP-Absender melden hasUsername und hasPassword statt der eigentlichen Zugangsdaten - beide Hälften werden zurückgehalten, da ein Benutzername genauso Teil der Zugangsdaten ist wie das Passwort. Ein Absender bleibt anhand seines Namens, Hosts und der Absenderadresse identifizierbar. Verbundene Postfächer melden eine teilweise maskierte Adresse wie so***@example.com und niemals ihre Anmeldetoken.

Nur lesbar. Absender werden in der App verbunden und bearbeitet.

Secrets

Methode Pfad Level Zweck
GET /api/v1/secrets read Namen und Beschreibungen von Secrets auflisten

Liefert hasValue, niemals den Wert selbst. Es gibt keinen Endpunkt, der ein Secret zurückliest. Secrets werden in der App erstellt und aktualisiert.

Hochgeladene Dateien

Methode Pfad Level Zweck
GET /api/v1/files read Hochgeladene Logos, Bilder und Anhänge auflisten
DELETE /api/v1/files write Eine Datei löschen, per key im Body

Die Liste akzeptiert page, limit (maximal 100) und q zur Suche nach Dateinamen.

Mit ?usage=true meldet jede Datei zusätzlich inUse sowie ein usedBy-Array, das die referenzierenden Layouts und Presets benennt. So finden Sie in einer einzigen Anfrage alles, was sich gefahrlos entfernen lässt. Dabei werden Ihre Layouts und Presets durchsucht, weshalb dies optional und nicht die Standardeinstellung ist.

Das Hochladen ist hier nicht verfügbar - fügen Sie Dateien über die Medienauswahl in der App hinzu.

HTTP-Anfragen

Methode Pfad Level Zweck
GET /api/v1/http-requests read HTTP-Anfragen auflisten
POST /api/v1/http-requests write Eine neue erstellen
GET /api/v1/http-requests/:id read Eine abrufen
PUT / PATCH /api/v1/http-requests/:id write Eine aktualisieren
DELETE /api/v1/http-requests/:id write Eine löschen
POST /api/v1/http-requests/:id/test execute Gegen das echte Ziel ausführen

Die Liste akzeptiert dieselben Parameter page, limit und q wie bei E-Mail-Layouts.

Die Ziel-url muss mit http:// oder https:// beginnen. Andere Schemata werden beim Speichern abgelehnt.

Zugangsdaten, die als Literal in einen Header oder Body geschrieben wurden, werden in jeder Antwort maskiert. Werte, die als {{ secrets.KEY }} referenziert werden, werden unverändert zurückgegeben, da die Referenz selbst nicht sensibel ist.

Verlauf und Statistiken

Umfasst sowohl E-Mail-Versendungen als auch HTTP-Anfragen.

Methode Pfad Level Zweck
GET /api/v1/history read Ausführungen auflisten
GET /api/v1/history/:id read Eine Ausführung mit Anfrage- und Antwortdaten abrufen
GET /api/v1/stats read Gesamtzahlen und Erfolgsquote

Der Verlauf akzeptiert page, limit (maximal 100), actionType, status (PENDING, SUCCESS, FAILED) sowie actionConfigId, um nach einem einzelnen Layout oder einer einzelnen Anfrage zu filtern.

actionType muss genau EMAIL oder HTTP_REQUEST lauten. Ein nicht erkannter Wert wird ignoriert statt abgelehnt, sodass ein Tippfehler alle Ergebnisse statt eines Fehlers zurückgibt.

Statistiken akzeptieren days (Standard 30, maximal 365).

Statuscodes

Code Bedeutung
200 Erfolg
201 Erstellt
400 Fehlerhafte Anfrage oder fehlgeschlagene Validierung
401 Fehlender, fehlerhafter oder widerrufener API-Schlüssel
403 Schlüssel ist gültig, aber sein Level ist für diesen Endpunkt zu niedrig
404 Nicht gefunden oder gehört zu einem anderen Shop
409 Abgelehnt, da der Datensatz noch verwendet wird (Dateilöschung)
429 Rate-Limit erreicht - siehe unten
502 Die Anfrage wurde ausgeführt, aber das Drittanbieterziel ist fehlgeschlagen

Ein Datensatz, der zu einem anderen Shop gehört, liefert 404 statt 403, sodass die API niemals bestätigt, dass eine ID anderswo existiert.

Rate-Limits

Zwei unabhängige Budgets, jeweils pro Schlüssel:

  • 300 Anfragen pro 60 Sekunden über alle Endpunkte hinweg.
  • 60 execute-Aufrufe pro Stunde zusätzlich dazu, für POST /api/v1/http-requests/:id/test.

Wird eines der beiden überschritten, wird 429 mit einer erläuternden error-Meldung zurückgegeben. Das execute-Budget ist bewusst knapp bemessen: Eine außer Kontrolle geratene Schleife, die Live-Anfragen an einen Zahlungsanbieter abschießt, ist ein deutlich schlimmerer Fehler als ein langsames Skript.

Die Budgets gelten pro Schlüssel, nicht pro Shop, sodass eine Integration das Kontingent einer anderen nicht aufbrauchen kann.