Einführungen
API-Integration mit Output.Rocks
Einführung in die API-Anbindung Ihrer Systeme
Zielgruppe dieser Einführung: Diese Dokumentation richtet sich an technische Administratoren und Entwickler, die Output.Rocks in bestehende Systeme integrieren möchten. Für die Erstellung von Vorlagen und die Nutzung der Web-UI finden Sie die entsprechende Einführung unter Schnellstart: Templating mit Output.Rocks.
Was ist die Output.Rocks API?
Die Output.Rocks API ermöglicht es technischen Administratoren und Entwicklern, die Dokumentenerstellung und E-Mail-Versendung programmatisch zu steuern. Über einen einzigen POST-Request an api/renderings/ können sowohl Dokument- als auch E-Mail-Vorlagen mit demselben template-Identifier angesprochen werden.
Powercloud-Integration: Diese Einführung zeigt konkrete Beispiele für die Powercloud-Integration. Die Prinzipien gelten jedoch für alle API-Integrationen.
Die ersten Schritte
- Authentifizierung mit API-Token
- Basis-Workflow: POST /api/renderings
- Powercloud-Integration einrichten
- Erweiterte Features nutzen
- User-Interaktion-Feedback
1. Authentifizierung mit API-Token
Bevor Sie die API nutzen können, müssen Sie einen API-Token erstellen. Dieser Token authentifiziert alle API-Requests von Ihrem System.
Die API-Token-Verwaltung finden Sie im Backend unter Integration → API-Token. Eine detaillierte Beschreibung finden Sie unter API-Token.
API-Token erstellen
- Navigieren Sie zu Integration → API-Token → API-Token erstellen
- Geben Sie einen sprechenden Identifier ein (z.B.
powercloud-productionodersap-backend) - Fügen Sie eine Beschreibung hinzu, die den Verwendungszweck erklärt
- Setzen Sie das Aktiv ab-Datum, falls der Token erst später aktiv werden soll
- Speichern Sie den Token
Token-Sicherheit: Der eigentliche Token-Wert wird automatisch beim Speichern generiert und ist nur einmal in der Detailansicht sichtbar. Kopieren Sie den Token sofort und speichern Sie ihn sicher. Der Token kann nicht erneut angezeigt werden.
Token im API-Request verwenden
Der API-Token wird im HTTP-Header X-AUTH-TOKEN übergeben:
curl -X POST https://app.output.rocks/api/renderings \
-H "Content-Type: application/json" \
-H "X-AUTH-TOKEN: Ihr-Token-Hier" \
-H "accept: application/json" \
-d '{
"template": "rechnung_monatsabschluss",
"format": "pdf",
"data": {
"kunde": {
"nummer": "K-12345",
"name": "Max Mustermann"
}
}
}'2. Basis-Workflow: POST /api/renderings
Der zentrale Endpunkt für alle Rendering-Requests ist POST /api/renderings. Ein Request kann sowohl Dokumente als auch E-Mails gleichzeitig auslösen, wenn die entsprechenden Vorlagen denselben Identifier oder Group Identifier verwenden.
Workflow-Diagramm
Request-Struktur
Ein minimaler API-Request sieht folgendermaßen aus:
{
"template": "rechnung_monatsabschluss",
"format": "pdf",
"data": {
"kunde": {
"nummer": "K-12345",
"name": "Max Mustermann",
"email": "max.mustermann@example.com"
},
"vertrag": {
"id": "V-98765",
"datum": "2024-01-15"
}
}
}Request-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
template | string | Ja | Identifier der Vorlage, die gerendert werden soll |
format | string | Nein | Ausgabeformat: pdf (Standard), doc, odt, rtf, html, txt |
data | object | Nein | JSON-Objekt mit den Daten, die in die Vorlage eingefügt werden |
externalId | string | Nein | Externe ID zur Zuordnung in Fremdsystemen (z.B. Powercloud-Referenz) |
webhook | string | Nein | Identifier oder Group Identifier des Webhooks für Folgeaktionen |
comment | string | Nein | Kommentar für den Rendering-Prozess |
emailServer | string | Nein | Identifier der E-Mail-Server-Konfiguration in Output.Rocks |
metadata | object | Nein | Zusätzliche Metadaten für den Rendering-Prozess (z.B. für Webhooks) |
or | object | Nein | Output.Rocks-spezifische Parameter (z.B. pdfUniversalAccessibility: true) |
Format für E-Mails: E-Mail-Vorlagen werden immer als .eml-Dateien gerendert, unabhängig vom angegebenen format-Parameter. Der format-Parameter gilt nur für Dokument-Vorlagen.
Asynchrones Rendering: Das Rendering wird asynchron verarbeitet. Das generierte Dokument kann über die GET-API oder die Admin-UI abgerufen werden. Konfigurierte Webhooks werden nach der Dokumentenerstellung ausgeführt.
Response-Struktur
Bei erfolgreichem Request erhalten Sie einen HTTP-Status-Code 201 und eine Response mit Informationen zum erstellten Request:
{
"id": 12345,
"externalId": "external-id",
"template": "rechnung_monatsabschluss",
"format": "pdf",
"webhook": "my-webhook",
"comment": "My Comment",
"emailServer": "my-smtp"
}3. Powercloud-Integration einrichten
Powercloud.retail kann so konfiguriert werden, dass Events automatisch an Output.Rocks gesendet werden. Dies ermöglicht eine vollständig automatisierte Dokumentenerstellung bei Powercloud-Events.
Voraussetzungen:
Bevor Sie die Powercloud-Integration einrichten, benötigen Sie:
- API-Token in Output.Rocks (siehe Authentifizierung)
- Berechtigung in Powercloud für Event Endpoint-Konfiguration
- Vorlagen in Output.Rocks mit entsprechenden Identifiers
Event Endpoint in Powercloud konfigurieren
-
Navigieren Sie in Powercloud zu All Apps → Settings → Events → Event Endpoints → Endpoint erstellen
-
Füllen Sie das Event Endpoint-Formular aus:
| Feld | Wert |
|---|---|
| Name | Output.Rocks (App) (oder ein anderer sprechender Name) |
| Description | Output.Rocks (App) (bei mehreren Endpoints detailliertere Beschreibung) |
| URL | https://app.output.rocks/api/renderingsTest/Staging: https://app.staging.output.rocks/api/renderings |
| Timeout | 10000 |
| Minimum duration per Request | 0 |
| Send Endpoint via Egress Gateway | false |
| Authentication | No authentication |
JSON Event Mapping konfigurieren
Um Events an Output.Rocks zu senden:
- Navigieren Sie zu All Apps → Settings → Events → JSON Event Mapping
- Klicken Sie auf Bearbeiten bei dem Event, das Sie an Output.Rocks senden möchten
- Im Abschnitt Event Endpoints fügen Sie den konfigurierten Output.Rocks Event Endpoint zu Assigned Endpoints hinzu
Mehrere Event Endpoints: Sie können mehrere Event Endpoints für verschiedene Zwecke konfigurieren. Beispielsweise einen für "nur Druck" und einen anderen für E-Mail-Webhooks oder andere Services.
Erweiterte und dynamische Features nutzen
Output.Rocks bietet mehrere erweiterte Möglichkeiten, die über die Basis-API-Nutzung hinausgehen.
Viele Eigenschaften von Dokumenten und E-Mails können dynamisch über die <<>>-Syntax gesetzt werden. Dies ermöglicht es, Werte aus dem Request-Payload, Standardwerten oder Komponenten zu verwenden.
Verfügbare dynamische Eigenschaften:
Dokument-Prozesse:
- Beschreibung
- Dateiname
- Benutzerdefinierte ID
E-Mail-Prozesse:
- Beschreibung
- Dateiname
- Benutzerdefinierte ID
- Empfänger (An)
- CC
- BCC
- Betreff
Beispiel: Dynamische E-Mail-Eigenschaften
Angenommen, Sie senden folgende Daten im Request:
{
"contract": {
"id": 1234,
"firstName": "Max",
"lastName": "Mustermann",
"balance": 199.0,
"email": "max.mustermann@example.com"
}
}E-Mail-Empfänger dynamisch setzen:
In der E-Mail-Vorlage-Konfiguration im Backend:
<<contract.email>>
Dateiname dynamisch setzen:
<<contract.firstName>>_<<contract.lastName>>Contract<<contract.id>>
Max_Mustermann_Contract_1234.pdfCC mit Standardwert:
<<standard.cc_for_emails>>
Einfache Mapping-Logik: Die <<>>-Syntax auf Eigenschaften erlaubt nur einfaches Mapping (keine Bedingungen, Schleifen oder Funktionen). Für komplexe Logik verwenden Sie Vorlagenkomponenten.
Komplexe Logik mit Vorlagenkomponenten
Für komplexere Logik (z.B. bedingte Betreffzeilen) verwenden Sie Vorlagenkomponenten:
Vorlagenkomponente definieren:
- Identifier:
balance_sign - Wert:
<<cs_{contract.balance >= 0}>>positive<<else>>negative<<es_>>
In E-Mail-Betreff verwenden:
Betreff: Sehr geehrte(r) <<contract.firstName>>, Ihr Saldo ist <<component.balance_sign>>Ergebnis: Sehr geehrte(r) Max, Ihr Saldo ist positive (bei positivem Saldo)
Datenvalidierung
Output.Rocks bietet ein flexibles Validierungskonzept, um sicherzustellen, dass E-Mails und Dokumente nur bei gültigen Daten gerendert werden.
Validatoren erstellen
-
Navigieren Sie zu Vorlagen-Management → Validierung → Validator erstellen
-
Details-Tab:
- Identifier: Eindeutiger Identifier für den Validator (wird in Vorlagen verwendet)
- Beschreibung: Beschreibung der Validierungslogik (z.B. "Prüfung auf positives Saldo")
- Fehlermeldung: Nachricht, die bei fehlgeschlagener Validierung angezeigt wird
- Aktiv ab: Optional für zeitgesteuerte Validatoren
- Aktiv: Checkbox zum Aktivieren/Deaktivieren
-
Datenvalidierung-Tab:
- Invalid, if defined condition returns "true": Wenn aktiviert, wird die Bedingung als "true" erwartet, wenn Daten ungültig sind
- Condition: Die zu prüfende Bedingung (Symfony Expression Language)
Validierungs-Beispiel
Angenommen, Sie möchten sicherstellen, dass das Saldo positiv ist, bevor gerendert wird:
Daten im Request:
{
"contract": {
"id": 1234,
"balance": 199.0
}
}Validatoren-Konfiguration:
- Invalid, if defined condition returns "true" ist aktiviert
- Condition:
data['contract']['balance'] < 0
Oder alternativ:
- Invalid, if defined condition returns "true" ist deaktiviert
- Condition:
data['contract']['balance'] >= 0
Validatoren Vorlagen zuweisen
- Bearbeiten Sie eine Dokument- oder E-Mail-Vorlage
- Öffnen Sie den Tab Validierung
- Weisen Sie die Validator-Identifier zu
Validierungsauswahl: Validatoren werden dynamisch anhand ihrer Identifier ausgewählt. Für jeden Identifier wird der neueste aktive Validator verwendet. Dies ermöglicht zeitgesteuerte Validierungsänderungen über das "Aktiv ab"-Feld.
Invalid-Prozesse verwalten: Prozesse mit Status "invalid" können im Backend unter Requests eingesehen, revalidiert, erzwungen oder gelöscht werden. Ein Link zu invalid-Prozessen erscheint auf dem Dashboard, sobald welche vorhanden sind.
User-Interaktion-Feedback
Output.Rocks kann User-Interaktionen in Powercloud-Systemen erzeugen, wenn Validierungen fehlschlagen oder Prozesse blockiert sind. Zusätzlich bietet Output.Rocks eine API, um Feedback zu geschlossenen User-Interaktionen von Powercloud zu empfangen.
Webhook für User-Interaktionen konfigurieren
- Erstellen Sie einen Webhook in Output.Rocks unter Integration → Webhooks
- Wählen Sie den Typ Powercloud User Interaction oder einen Custom-Webhook
- Konfigurieren Sie die Webhook-Parameter entsprechend Ihrer Powercloud-Instanz
Eine detaillierte Anleitung zur Webhook-Konfiguration finden Sie unter Webhooks.
Powercloud für Feedback konfigurieren
Nach der Webhook-Konfiguration in Output.Rocks muss Powercloud so konfiguriert werden, dass geschlossene User-Interaktionen an Output.Rocks zurückgemeldet werden.
Schritt 1: Event Endpoint für Feedback erstellen
-
Navigieren Sie in Powercloud zu All Apps → Settings → Events → Event Endpoints → Endpoint erstellen
-
Füllen Sie das Event Endpoint-Formular aus:
| Feld | Wert |
|---|---|
| Name | output_rocks_user_interactions |
| Description | Output.Rocks (App) endpoint to receive closed user interactions data |
| URL | https://app.output.rocks/api/powercloud/retail/user-interaction-feedbackTest/Staging: https://app.staging.output.rocks/api/powercloud/retail/user-interaction-feedback |
| Timeout | 10000 |
| Minimum duration per Request | 0 |
| Send Endpoint via Egress Gateway | false |
| Authentication | No authentication |
Schritt 2: Expert Settings konfigurieren
- Navigieren Sie zu All Apps → Settings → Expert Settings
- Setzen Sie die folgenden beiden Expert Settings auf den Event Endpoint-Namen
output_rocks_user_interactions:hook.integration_layer.endpoint_namehook.integration_layer.order_endpoint_name
User-Interaktion-Feedback-Loop
Status-Sichtbarkeit: Der Status von User-Interaktionen ist in Output.Rocks im Feld external state der Prozesse sichtbar. Dies ermöglicht es, den Bearbeitungsstatus direkt im Output.Rocks-Backend zu verfolgen.
Fehlerbehandlung und Monitoring
HTTP-Status-Codes
Output.Rocks verwendet standardmäßige HTTP-Status-Codes:
| Status-Code | Bedeutung | Aktion |
|---|---|---|
201 Created | Rendering-Prozess erfolgreich erstellt | - |
400 Bad Request | Ungültige Request-Struktur oder fehlende Parameter | Request-Struktur prüfen |
422 Unprocessable Entity | Validierungsfehler oder unverarbeitbare Daten | Daten-Payload prüfen |
Fehler-Response-Struktur
Bei Fehlern enthält die Response ein error-Objekt:
{
"error": {
"code": 422,
"message": "Validation failed",
"details": [
"Template 'rechnung_monatsabschluss' not found",
"Required field 'data.customer.number' is missing"
]
}
}Monitoring im Backend
Alle API-Requests werden im Backend unter Requests gelistet. Hier können Sie:
- Den Status jedes Requests einsehen
- Fehlerhafte Prozesse identifizieren
- Blockierte Prozesse (invalid) verwalten
- Erstellte Dokumente und E-Mails einsehen
Dashboard-Überwachung: Das Dashboard zeigt wichtige Metriken wie blockierte Requests, blockierte Dokumentenprozesse und nicht bestätigte E-Mails. Nutzen Sie diese Übersicht für ein schnelles Monitoring Ihrer API-Integration.