Platzhalter & Zustellungsreferenz¶
Die Nachschlagetabellen hinter jeder Integrationsseite: welche {{ … }}-
Variablen es wo gibt, wie sie gerendert werden und was die Status- und
Fehlerfelder in Fetch-Reports und Zustellungsprotokollen bedeuten.
Platzhalter¶
Ein Platzhalter ist {{ name }} (Leerraum innerhalb der Klammern ist
erlaubt). Namen werden beim Speichern der Source oder des Bindings
geprüft, sodass ein Tippfehler oder eine in diesem Geltungsbereich
unbekannte Variable eine 422 mit dem Namen in der Meldung ist — nie eine
Überraschung zur Laufzeit.
Envelope-Felder — nur Outbound Bindings¶
Die Werte stammen aus dem Ereignis, das die Zustellung ausgelöst hat.
Verwendung ohne Namensraum: {{ session_id }}.
| Platzhalter | Wert | Leer bei |
|---|---|---|
event_type |
z. B. session.checked |
— |
session_id |
Session-UUID | — |
organization_id |
Organisations-UUID | — |
project_id |
Projekt-UUID | — |
data_provider_id |
Data-Provider-UUID | Sessions ohne Provider |
data_contract_id |
Data-Contract-UUID | — |
period |
Die Lieferperiode, z. B. 2026-08 |
— |
status |
Aktuelle Pipeline-Stufe, z. B. checked |
— |
verdict |
passed / warnings / failed — Ergebnis der automatischen Prüfungen |
Ereignissen vor einem Prüfergebnis (created, uploaded, parsed, transformed) |
phase |
technical (session.parsed, session.failed bei parse), context (session.failed bei context_fetch / context_validation), content (session.transformed, session.checked, session.failed bei transform / validation_gating / validate / check) |
Jedem anderen Ereignis |
parse_error_count |
Parse-Befunde der Schwere error über alle Dateien (eine gar nicht lesbare Datei zählt als einer) |
Jedem Ereignis außer session.parsed und session.failed bei parse |
parse_warning_count |
Parse-Befunde der Schwere warning |
Jedem Ereignis außer session.parsed und session.failed bei parse |
health |
Dashboard-Zustand: created, in_progress, blocked, attention, ready, completed |
— |
run_id |
UUID des Pipeline-Laufs | Jedem Ereignis, das kein Lauf-Ereignis ist: session.parsed, session.transformed, session.checked und session.failed tragen sie |
occurred_at |
ISO-8601-Zeitstempel des Ereignisses | — |
stage |
Fehlgeschlagene Stufe: context_validation, context_fetch, parse, transform, validation_gating, validate, check |
Jedem Ereignis außer session.failed |
reason |
Kurzer Fehlercode (context_invalid, context_fetch_failed, context_fetch_timeout, parse_error, blocking_violations, …) |
Jedem Ereignis außer session.failed |
message |
Lesbare Fehlererklärung, z. B. welche Kontextquelle warum fehlgeschlagen ist; null, wenn die Stufe stattdessen Befunde hinterlassen hat |
Jedem Ereignis außer session.failed |
Exportdetails (data.export.*) sind aus einem Mapping nicht adressierbar.
context.* — Bindings und Context Sources¶
{{ context.<name> }} für jeden im Kontextschema des Projekts deklarierten
Skalar (Tabellen unter _tables sind nicht adressierbar). Der Wert ist,
was der Session-Kontext zum Zeitpunkt der Zustellung bzw. des Fetch enthält.
- In einem Binding rendert ein deklarierter Skalar, den die Session nie
gesetzt hat, als
null— ein optionales Feld bleibt leer, ein Eintrag inrequired_fieldsschlägt mit dem Feldnamen fehl. Ein im Schema nicht deklarierter Name wird beim Speichern abgelehnt. - In einer Context Source muss der referenzierte Skalar beim Start des Fetch bereits im Session-Kontext sein — vom Aufrufer bei der Session-Erstellung geliefert. Werte, die andere Sources desselben Fetch erzeugen, stehen nicht als Platzhalter zur Verfügung.
session.* — Bindings und Context Sources¶
Drei freigegebene Session-Attribute, als Strings gerendert:
| Platzhalter | Wert |
|---|---|
session.id |
Session-UUID |
session.period |
Perioden-String |
session.data_provider_id |
Data-Provider-UUID oder null |
Rendering-Regeln¶
- Ein String, der genau ein Platzhalter ist, wird durch den Rohwert
ersetzt — Zahlen bleiben Zahlen,
nullbleibtnull. - Ein in einen längeren String eingebetteter Platzhalter
(
FIBU {{ period }}) wird als Text gerendert. - Ist das Ziel SQL (PostgreSQL-Sources), werden Platzhalter als Parameter gebunden; ist es JSON (BuiltAPI, Salesforce), werden sie in die JSON-Struktur eingesetzt. Nie in URLs oder Bezeichner.
value_maps(Bindings) laufen nach dem Rendern und vor derrequired_fields-Prüfung: Ein"*"-Fallback kann ein Pflichtfeld füllen.
Kontext-Fetch-Report¶
An der Session als context_fetch_report gespeichert; auf der Session-Seite
sichtbar und vom Re-Fetch-Endpunkt zurückgegeben.
status |
Bedeutung |
|---|---|
pending |
Der Fetch ist eingereiht oder läuft. Die Pipeline wartet. |
completed |
Jede Source war erfolgreich; Kontext gemischt und erneut validiert. |
failed |
Mindestens eine Source ist fehlgeschlagen. Die Pipeline ist blockiert, bis ein erneuter Lauf gelingt. |
Je Source: name, status (ok / error), rows, error_kind,
message, overwrote_caller_value.
Fehler beim Kontext-Fetch¶
error_kind |
Ausgelöst wenn |
|---|---|
connection_error |
Das System ist nicht erreichbar, läuft in ein Timeout oder antwortet 5xx; PostgreSQL-Verbindungs-Timeout. |
auth_error |
Token, Passwort oder Zugangsdaten abgelehnt; keine Zugangsdaten hinterlegt. |
query_error |
Die Abfrage ist fehlerhaft oder verletzt ein Limit (ungültige Entity-ID, Nicht-SELECT-SQL, zu viele Zeilen, Statement-Timeout, Skalar mit mehr als einer Spalte, fehlende workspace_id). |
empty_result |
Ein Pflicht-Ziel hat keine Zeilen / keinen Wert erhalten. |
Zustellungsprotokoll¶
Outbound-Binding-Zustellungen teilen sich die Tabelle mit
Webhook-Zustellungen (GET /api/webhook-deliveries?connection_id=…);
Binding-Zustellungen tragen connection_id, project_id und binding_name
statt endpoint_id.
status |
Bedeutung |
|---|---|
pending |
Wartet auf den nächsten Versuch; next_retry_at sagt wann. |
in_progress |
Ein Versuch läuft. |
succeeded |
Der Datensatz wurde erzeugt; last_response_excerpt enthält die Datensatz-ID des Zielsystems. |
failed |
Dead-Letter: Versuche erschöpft oder ein permanenter Fehler. |
last_error trägt <kind>: <message>:
| Kind | Retry? | Typische Meldung |
|---|---|---|
connection_error |
ja, mit Backoff | Salesforce returned 503, Token endpoint unreachable: ConnectTimeout |
delivery_rejected |
nein | Salesforce rejected the record (HTTP 400), Required mapping field(s) resolved to an empty value: …, Query placeholder 'run_id' has no value in this session |
auth_error |
nein | Token endpoint rejected the credentials (HTTP 400), Salesforce rejected a freshly issued token (HTTP 401) |
Fehler vor dem Adapterlauf werden ohne Kind-Präfix gespeichert:
last_error |
Bedeutung |
|---|---|
connection_missing |
Die Connection wurde gelöscht oder gehört einer anderen Organisation. |
connection_inactive |
Die Connection ist deaktiviert. |
binding_missing |
Das Binding wurde aus dem Projekt entfernt (oder umbenannt). |
binding_inactive |
Das Binding ist deaktiviert — von Hand oder durch Auto-Deaktivierung. |
adapter_missing / adapter_not_outbound |
Der Connection-Typ hat keinen Outbound-Adapter (sollte bei einem validierten Binding nicht vorkommen). |
credential_decrypt_failed |
Das gespeicherte Geheimnis ließ sich nicht entschlüsseln — Zugangsdaten rotieren. |
Retry-Zeitplan¶
Gemeinsam mit Webhook-Endpunkten: Basisverzögerung 30 s, exponentielles Backoff bis 1 h, Jitter je Versuch, 6 Versuche, dann Dead-Letter. Nach 10 aufeinanderfolgenden Dead-Letters wird ein Binding automatisch deaktiviert; ein Erfolg setzt den Zähler zurück. Adapteraufrufe laufen nach 15 s in ein Timeout (Salesforce, BuiltAPI).