Offenes Umfrageformat
Ein offenes, JSON-basiertes Format zur Definition von Umfragen und Formularen. Wird von YourOpinion.is verwendet und kann von jedem frei implementiert werden.
Aktuelle Version: 1.0 (Veröffentlicht: 15.11.2025)
Spezifikation herunterladen
- JSON-Schema - Maschinenlesbare Formatdefinition
- Markdown - Menschenlesbare Dokumentation (optimiert für LLMs)
Einführung
Das Offene Umfrageformat bietet eine standardisierte Methode, um Umfragen, Fragebögen und Formulare als JSON-Objekte zu definieren. Dieses Format ermöglicht:
- Portabilität - Verschieben von Umfragen zwischen verschiedenen Plattformen und Werkzeugen
- Versionskontrolle - Nachverfolgen von Änderungen an Umfragen mit Standard-Diff-Werkzeugen
- Programmatische Erstellung - Dynamisches Erstellen von Umfragen aus Code
- LLM-Kompatibilität - KI-Assistenten können Umfragen einfach erstellen und ändern
Kernkonzepte
Sammlungen (Seiten)
Umfragen sind in Sammlungen organisiert, die als Seiten oder Abschnitte fungieren. Jede Umfrage muss mindestens eine Sammlung enthalten.
Elemente
Individuelle Komponenten innerhalb einer Sammlung, wie zum Beispiel:
- Fragen (Texteingabe, Multiple-Choice, Bewertungen usw.)
- Inhaltsblöcke (Markdown-Text, Bilder)
- Ablaufsteuerungselemente (bedingte Logik, Seitensprünge)
Assets
Wiederverwendbare Komponenten, auf die von mehreren Fragen aus verwiesen werden kann:
- Optionslisten (für Auswahlfragen)
- Bewertungsskalen
- Geteilte Ressourcen
Dokumentstruktur
Eine Umfrage wird als JSON-Objekt mit dieser Struktur dargestellt:
{
"$schema": "https://youropinion.is/json-schema/1.0",
"$readme": "https://youropinion.is/docs/survey-format.md",
"collections": {
"collection-id-1": {
"name": "Name der Sammlung",
"elements": {
"element-id-1": {
"type": "Markdown",
"data": {
/* Elementspezifische Daten */
}
}
},
"displayOrder": ["element-id-1"]
}
},
"displayOrder": ["collection-id-1"],
"assets": {
"asset-id-1": {
"type": "options",
"data": {
/* Asset-spezifische Daten */
}
}
}
}
Top-Level-Eigenschaften
$schema (optional)
URL zur JSON-Schema-Definition für die Validierung:
"$schema": "https://youropinion.is/json-schema/1.0"
$readme (optional)
URL zur menschenlesbaren Dokumentation:
"$readme": "https://youropinion.is/docs/survey-format.md"
collections (erforderlich)
Objekt, das die Seiten/Abschnitte der Umfrage enthält. Jeder Schlüssel ist eine eindeutige Sammlungs-ID:
"collections": {
"welcome": {
"name": "Willkommensseite",
"elements": { /* ... */ },
"displayOrder": ["intro", "consent"]
},
"questions": {
"name": "Hauptfragen",
"elements": { /* ... */ },
"displayOrder": ["q1", "q2", "q3"]
}
}
Eigenschaften der Sammlung:
name(string, optional) - Menschenlesbarer Name der Sammlung (wird Benutzern nicht angezeigt, dient als Referenz)condition(object, optional) - Bedingte Logik, um zu bestimmen, ob diese Sammlung angezeigt werden soll (siehe Abschnitt Bedingte Logik)elements(object) - Enthält die Elemente für diese Sammlung. Jeder Schlüssel ist eine eindeutige Element-IDdisplayOrder(array) - Array von Element-IDs, das die Anzeigereihenfolge definiert
Wichtig: Das displayOrder-Array fungiert sowohl als Filter als auch zur Festlegung der Reihenfolge:
- Nur Elemente, die in
displayOrderaufgeführt sind, werden angezeigt - Elemente, die nicht in
displayOrderaufgeführt sind, verbleiben in der Definition, sind aber versteckt - Das Hinzufügen einer nicht existierenden Element-ID führt zu einem Fehler
displayOrder (erforderlich)
Array, das die Reihenfolge der Sammlungen festlegt:
"displayOrder": ["welcome", "questions", "thank-you"]
Dieselben Filterregeln gelten: Nur hier aufgeführte Sammlungen werden angezeigt.
assets (optional)
Wiederverwendbare Komponenten, auf die von mehreren Elementen verwiesen wird. Assets reduzieren Duplikate und erleichtern die Wartung von Umfragen.
Asset-Typen:
options- Wiederverwendbare Optionslisten fürSelectOne/SelectMany-Fragenordinal-scale- Wiederverwendbare beschriftete Skalen fürOrdinalScale-Frageninterval-scale- Wiederverwendbare numerische Skalen fürIntervalScale-Fragen
Beispiel - Options-Asset:
"assets": {
"color-options": {
"type": "options",
"name": "Farboptionen",
"data": {
"options": {
"red": { "label": "Rot" },
"blue": { "label": "Blau" },
"green": { "label": "Grün" },
"yellow": { "label": "Gelb" }
},
"displayOrder": ["red", "blue", "green", "yellow"]
}
},
"satisfaction-scale": {
"type": "ordinal-scale",
"name": "Standard-Zufriedenheitsskala",
"data": {
"labels": {
"1": "Sehr unzufrieden",
"2": "Unzufrieden",
"3": "Neutral",
"4": "Zufrieden",
"5": "Sehr zufrieden"
}
}
},
"nps-scale": {
"type": "interval-scale",
"name": "Net-Promoter-Score-Skala",
"data": {
"start": 0,
"end": 10,
"labels": {
"start": "Unwahrscheinlich",
"end": "Sehr wahrscheinlich"
}
}
}
}
Alle Asset-Typen erfordern:
type- Asset-Typ:"options","ordinal-scale"oder"interval-scale"name- Menschenlesbarer Name für Dokumentationszweckedata- Typspezifische Datenstruktur
Auf Assets kann mittels JSON-Referenzen verwiesen werden (siehe Abschnitt JSON-Referenzen).
Elementtypen
Elemente sind die Bausteine Ihrer Umfrage. Jedes Element hat eine type- und eine data-Eigenschaft. Alle Elemente können optional ein extensions-Objekt für benutzerdefinierte Metadaten enthalten (wird vom Standard-Renderer nicht verwendet).
Verfügbare Elementtypen:
| Typ | Kategorie | Beschreibung |
|---|---|---|
Markdown | Inhalt | Formatierten Text und Inhalte anzeigen |
FlowControl | Steuerung | Bedingte Logik und Navigation |
String | Frage | Texteingabe (ein- oder mehrzeilig) |
Number | Frage | Numerische Eingabe |
Date | Frage | Datumsauswahl |
Boolean | Frage | Ja/Nein-Kontrollkästchen |
SelectOne | Frage | Einzelauswahl aus Optionen (Radio-Buttons) |
SelectMany | Frage | Mehrfachauswahl aus Optionen (Kontrollkästchen) |
IntervalScale | Frage | Numerische Bewertungsskala (z. B. 0-10 für NPS, 1-5 für Zufriedenheit) |
OrdinalScale | Frage | Beschriftete Bewertungsskala (z. B. von „Stimme überhaupt nicht zu“ bis „Stimme voll zu“) |
Payment | Frage | Element zur Zahlungsabwicklung |
Inhaltselemente
Markdown
Zeigt formatierten Text, Überschriften, Listen und andere Inhalte mithilfe der Markdown-Syntax an.
{
"type": "Markdown",
"data": {
"markdown": "# Willkommen!\n\nVielen Dank für die Teilnahme an unserer Umfrage.\n\n- Bitte antworten Sie ehrlich\n- Alle Antworten sind anonym"
}
}
Unterstütztes Markdown:
- Überschriften (
#,##,###) - Listen (geordnet und ungeordnet)
- Fett (
**Text**) und kursiv (*Text*) - Links (
[Text](URL)) - Codeblöcke
FlowControl
Steuert den Umfrageverlauf mit bedingter Logik und Navigation.
{
"type": "FlowControl",
"data": {
"condition": {
/* Optional - Siehe Abschnitt Bedingte Logik */
},
"action": {
"type": "survey-finish" // Optionen: "survey-finish" oder "page-finish"
}
}
}
Aktionstypen:
survey-finish- Beendet die Umfrage sofortpage-finish- Beendet die aktuelle Seite und wechselt zur nächsten
Für detaillierte Informationen zur Bedingungsstruktur und Beispielen siehe den Abschnitt Bedingte Logik weiter unten.
Fragetypen
Alle Fragen teilen sich diese gemeinsamen Eigenschaften:
{
"type": "QuestionType",
"data": {
"label": "Ihr Fragetext hier",
"required": "yes", // Optional: "yes", "no" oder "suggested" (Standard ist "no")
"markdown": "Hilfetext" // Optional: zusätzlicher Kontext in Markdown
}
}
Gemeinsame Eigenschaften:
label(string, erforderlich) - Der Fragetext, der den Benutzern angezeigt wirdrequired(string, optional) - Ob eine Antwort erforderlich ist:"yes","no"oder"suggested"(wird als optional, aber empfohlen angezeigt)markdown(string, optional) - Zusätzlicher Hilfetext oder Beschreibung im Markdown-FormatdefaultValue(any, optional) - Vorausgefüllter Wert für die Frage
String
Ein- oder mehrzeilige Texteingabe.
{
"type": "String",
"data": {
"label": "Wie lautet Ihr Name?",
"placeholder": "Geben Sie Ihren vollständigen Namen ein", // Optional
"multiline": false, // Optional: true für einen Textbereich (textarea)
"required": "yes"
}
}
Number
Numerische Eingabe mit optionaler Validierung.
{
"type": "Number",
"data": {
"label": "Wie viele Mitarbeiter?",
"min": 1, // Optional: Minimalwert
"max": 1000, // Optional: Maximalwert
"step": 1, // Optional: Schrittweite (Standard: 1)
"required": "yes"
}
}
Eigenschaften:
min(number, optional) - Minimal erlaubter Wertmax(number, optional) - Maximal erlaubter Wertstep(number, optional) - Schrittweite für die Eingabevalidierung (Standard: 1)
Date
Datumsauswahl mit optionaler Genauigkeit und Min/Max-Beschränkungen.
{
"type": "Date",
"data": {
"label": "Wann sind Sie beigetreten?",
"required": "suggested",
"accuracy": "day", // Optional: "day", "month" oder "year" (Standard: "day")
"min": "2020-01-01", // Optional: frühestes wählbares Datum
"max": "2025-12-31" // Optional: spätestes wählbares Datum
}
}
Eigenschaften:
accuracy(string, optional) - Genauigkeitsstufe des Datums:"day"- Vollständige Datumsauswahl mit Kalender (Standard)"month"- Auswahl von Monat und Jahr per Dropdown"year"- Nur-Jahr-Auswahl per Dropdown
min(string, optional) - Frühestes wählbares Datum. Kann sein:- ISO-Datumsstring (z. B.
"2020-01-01") - Relativer Zeitstring (z. B.
"+ 3 months","now","- 1 year")
- ISO-Datumsstring (z. B.
max(string, optional) - Spätestes wählbares Datum. Gleiche Formatoptionen wiemin.
Boolean
Ja/Nein-Kontrollkästchen. Der Standardwert ist false (nicht ausgewählt).
{
"type": "Boolean",
"data": {
"label": "Allgemeine Geschäftsbedingungen",
"description": "Ich stimme den Allgemeinen Geschäftsbedingungen zu" // Wird neben dem Kontrollkästchen angezeigt
}
}
SelectOne
Multiple-Choice-Frage (Radio-Buttons) - Benutzer wählen eine Option aus.
{
"type": "SelectOne",
"data": {
"label": "Was ist Ihre Lieblingsfarbe?",
"required": "yes",
"options": {
"options": {
"red": { "label": "Rot" },
"blue": { "label": "Blau" },
"green": { "label": "Grün" }
},
"displayOrder": ["red", "blue", "green"]
}
}
}
Verwendung von Asset-Referenzen:
{
"type": "SelectOne",
"data": {
"label": "Wählen Sie eine Farbe",
"options": { "$ref": "#/assets/color-options/data" }
}
}
SelectMany
Multiple-Choice-Frage (Kontrollkästchen) - Benutzer können mehrere Optionen auswählen.
{
"type": "SelectMany",
"data": {
"label": "Welche Betriebssysteme verwenden Sie?",
"required": "yes",
"options": {
"options": {
"windows": { "label": "Windows" },
"macos": { "label": "macOS" },
"linux": { "label": "Linux" }
},
"displayOrder": ["windows", "macos", "linux"]
},
"other": true, // Optional: fügt eine „Sonstige“-Option mit Texteingabe hinzu
"minSelections": 1, // Optional: Mindestanzahl erforderlicher Auswahlen
"maxSelections": 3 // Optional: Maximal erlaubte Anzahl an Auswahlen
}
}
IntervalScale
Numerische Bewertungsskala mit einem definierten Bereich (z. B. 0-10 für NPS, 1-5 für Zufriedenheit). Häufig verwendet für:
- Net Promoter Score (NPS): Skala von 0-10
- Zufriedenheitsbewertungen: Skala von 1-5 oder 1-7
- Wahrscheinlichkeitsfragen: Skala von 0-10
{
"type": "IntervalScale",
"data": {
"label": "Wie wahrscheinlich ist es, dass Sie uns einem Freund weiterempfehlen?",
"required": "yes",
"scale": {
"start": 0, // Startnummer der Skala
"end": 10, // Endnummer der Skala
"labels": {
// Beschriftungen für Start- und Endpunkte (erforderlich)
"start": "Überhaupt nicht wahrscheinlich",
"end": "Äußerst wahrscheinlich"
}
}
}
}
Häufige Anwendungsfälle:
// Net Promoter Score (NPS)
{
"type": "IntervalScale",
"data": {
"label": "Wie wahrscheinlich ist es, dass Sie uns weiterempfehlen?",
"scale": {
"start": 0,
"end": 10,
"labels": {
"start": "Unwahrscheinlich",
"end": "Sehr wahrscheinlich"
}
}
}
}
// 5-Punkte-Zufriedenheitsskala
{
"type": "IntervalScale",
"data": {
"label": "Wie zufrieden sind Sie mit unserem Service?",
"scale": {
"start": 1,
"end": 5,
"labels": {
"start": "Sehr unzufrieden",
"end": "Sehr zufrieden"
}
}
}
}
Anzeige: Zeigt eine horizontale Skala mit klickbaren Zahlen. Beschriftungen erscheinen unter den Start- und Endpunkten.
OrdinalScale
Beschriftete Bewertungsskala, bei der jeder Punkt eine eigene Beschriftung hat. Ideal für:
- Likert-Skalen mit spezifischem Wortlaut für jeden Punkt
- Zustimmungsskalen („Stimme überhaupt nicht zu“ → „Stimme voll und ganz zu“)
- Häufigkeitsskalen („Niemals“ → „Immer“)
- Benutzerdefinierte Bewertungsskalen mit aussagekräftigen Beschriftungen
{
"type": "OrdinalScale",
"data": {
"label": "Wie zufrieden sind Sie mit Ihrer Position?",
"required": "yes",
"scale": {
"labels": {
"1": "Sehr unzufrieden",
"2": "Unzufrieden",
"3": "Neutral",
"4": "Zufrieden",
"5": "Sehr zufrieden"
}
}
}
}
Häufige Anwendungsfälle:
// Likert-Zustimmungsskala
{
"type": "OrdinalScale",
"data": {
"label": "Das Produkt hat meine Erwartungen erfüllt.",
"scale": {
"labels": {
"1": "Stimme überhaupt nicht zu",
"2": "Stimme nicht zu",
"3": "Neutral",
"4": "Stimme zu",
"5": "Stimme voll und ganz zu"
}
}
}
}
// Häufigkeitsskala
{
"type": "OrdinalScale",
"data": {
"label": "Wie oft nutzen Sie unser Produkt?",
"scale": {
"labels": {
"1": "Niemals",
"2": "Selten",
"3": "Manchmal",
"4": "Oft",
"5": "Immer"
}
}
}
}
Anzeige: Zeigt beschriftete Schaltflächen oder Optionen. Jede Beschriftung wird vollständig angezeigt, was die Skala selbsterklärend macht.
IntervalScale vs. OrdinalScale:
- Verwenden Sie IntervalScale, wenn die Zahlen selbst eine Bedeutung haben (0-10, 1-5).
- Verwenden Sie OrdinalScale, wenn Sie für jeden Punkt benutzerdefinierte Beschriftungen benötigen.
IntervalScaleist kompakter;OrdinalScaleist beschreibender.
Payment
Sammelt Zahlungsinformationen und verarbeitet Transaktionen. Integriert sich mit Zahlungsanbietern, die in Ihren Umfrageeinstellungen konfiguriert sind.
{
"type": "Payment",
"data": {
"label": "Zahlung",
"required": "yes",
"amount": {
"value": 29.99,
"currency": "USD"
},
"captureMethod": "automatic" // Optional: "immediate", "manual" oder "automatic"
}
}
Eigenschaften:
amount(object, erforderlich) - Zahlungsbetrag mitvalue(Zahl) undcurrency(3-stelliger Code, z. B. „USD“, „EUR“, „GBP“)captureMethod(string, optional) - Wann die Zahlung erfasst werden soll:"immediate"- Zahlung sofort bei Absenden der Umfrage erfassen"manual"- Erfordert manuelle Erfassung über Ihr Zahlungs-Dashboard"automatic"- Automatische Erfassung bei Abschluss der Umfrage (Standard)
Hinweis: Die Zahlungsabwicklung erfordert, dass ein Zahlungsanbieter in Ihren Kanaleinstellungen konfiguriert ist. Unterstützte Währungen und Zahlungsmethoden hängen von Ihrer Anbieterkonfiguration ab.
JSON-Referenzen
Reduzieren Sie Duplikate durch Verweise auf wiederverwendbare Komponenten. Referenzen verwenden dieses Format:
{ "$ref": "[<location>]#<path>" }
location- URL zum Quelldokument (leer = aktuelles Dokument)path- Pfad vom Dokumentenstamm unter Verwendung von/-Trennzeichen
Beispiel - Inline-Duplizierung:
{
"question-1": {
"type": "SelectOne",
"data": {
"label": "Lieblingsfarbe?",
"options": {
"options": {
"red": { "label": "Rot" },
"blue": { "label": "Blau" }
},
"displayOrder": ["red", "blue"]
}
}
},
"question-2": {
"type": "SelectOne",
"data": {
"label": "Am wenigsten gemochte Farbe?",
"options": {
"options": {
"red": { "label": "Rot" },
"blue": { "label": "Blau" }
},
"displayOrder": ["red", "blue"]
}
}
}
}
Besser - Verwendung von Assets:
{
"collections": {
"main": {
"elements": {
"question-1": {
"type": "SelectOne",
"data": {
"label": "Lieblingsfarbe?",
"options": { "$ref": "#/assets/colors/data" }
}
},
"question-2": {
"type": "SelectOne",
"data": {
"label": "Am wenigsten gemochte Farbe?",
"options": { "$ref": "#/assets/colors/data" }
}
}
},
"displayOrder": ["question-1", "question-2"]
}
},
"assets": {
"colors": {
"type": "options",
"data": {
"options": {
"red": { "label": "Rot" },
"blue": { "label": "Blau" }
},
"displayOrder": ["red", "blue"]
}
}
}
}
Vorteile:
- Eine zentrale Datenquelle (Single Source of Truth)
- Einfachere Wartung
- Bessere Diffs in der Versionskontrolle
- Kleinere Dateigröße
Bedingte Logik
Bedingte Logik ermöglicht es Ihnen, dynamische Umfragen zu erstellen, die sich an die Antworten der Benutzer anpassen. Bedingungen können auf zwei Arten verwendet werden:
1. Bedingungen auf Sammlungsebene
Zeigen oder verbergen Sie ganze Seiten basierend auf Bedingungen. Wenn die Bedingung einer Sammlung zu false ausgewertet wird, wird die gesamte Seite übersprungen und die Ausführung wird mit der nächsten Sammlung fortgesetzt.
{
"collections": {
"follow-up": {
"name": "Folgefragen",
"condition": {
"type": "condition",
"fact": "questions/nps-score",
"operator": "lt",
"compare": { "value": 7 }
},
"elements": {
/* ... */
},
"displayOrder": ["question-1"]
}
}
}
In diesem Beispiel wird die Seite „Folgefragen“ nur angezeigt, wenn der NPS-Score kleiner als 7 ist.
2. FlowControl-Elemente
Steuern Sie den Umfrageverlauf innerhalb einer Seite mit FlowControl-Elementen. Wenn die Bedingung zu true ausgewertet wird, wird die angegebene Aktion ausgeführt.
Verfügbare Aktionen:
survey-finish- Beendet die Umfrage sofort (überspringt alle verbleibenden Seiten)page-finish- Beendet die aktuelle Seite und wechselt zur nächsten (überspringt verbleibende Elemente auf der aktuellen Seite)
{
"type": "FlowControl",
"data": {
"condition": {
"type": "condition",
"fact": "questions/satisfaction",
"operator": "eq",
"compare": { "value": "very-satisfied" }
},
"action": {
"type": "page-finish"
}
}
}
Hinweis: Wenn keine condition angegeben ist, wird die Aktion immer ausgeführt, wenn das Element erreicht wird.
Bedingungsstruktur
Bedingungen werden als binärer Baum mit zwei Knotentypen definiert:
1. Vergleichsbedingungen
Vergleichen Sie einen Fakt (Umfrageantwort) mit einem Wert oder einem anderen Fakt.
{
"type": "condition",
"fact": "questions/age",
"operator": "gt",
"compare": { "value": 18 }
}
Eigenschaften:
type- Immer"condition"für Vergleichefact(string) - Der Elementverweis im Format ‘sammlungs-id/element-id’, aus dem der Wert gelesen wirdoperator(string) - Vergleichsoperator (siehe Operatoren unten)compare(object, optional) - Womit verglichen werden soll:{ "value": <any> }- Vergleich mit einem literalen Wert{ "fact": "<sammlungs-id/element-id>" }- Vergleich mit dem Wert eines anderen Elements- Nicht erforderlich für Operatoren wie
"exists"oder"true"
not(boolean, optional) - Invertiert das Ergebnis (Standard:false)
Unterstützte Operatoren nach Elementtyp:
Number, IntervalScale, OrdinalScale, Date:
"eq"- Gleich"gt"- Größer als"gte"- Größer als oder gleich"lt"- Kleiner als"lte"- Kleiner als oder gleich"exists"- Hat einen Wert (benötigt keincompare)
String:
"eq"- Gleich"contains"- Zeichenkette enthält Wert"exists"- Hat einen Wert (benötigt keincompare)
Boolean:
"true"- Wert ist wahr (benötigt keincompare)"exists"- Hat einen Wert (benötigt keincompare)
SelectOne:
"eq"- Gleich einer spezifischen Option"in"- Ist eine von mehreren Optionen (Vergleichswert sollte im SelectMany-Format sein)"exists"- Hat einen Wert (benötigt keincompare)
SelectMany:
"eq"- Entspricht genau dem Satz von Optionen"exists"- Hat mindestens einen Wert (benötigt keincompare)
2. Kettenbedingungen
Kombinieren Sie mehrere Bedingungen mit logischen Operatoren.
{
"type": "all",
"items": [
{
"type": "condition",
"fact": "questions/age",
"operator": "gt",
"compare": { "value": 18 }
},
{
"type": "condition",
"fact": "questions/country",
"operator": "eq",
"compare": { "value": "US" }
}
]
}
Eigenschaften:
type- Logischer Operator:"all"- Alle Bedingungen müssen wahr sein (UND-Logik)"any"- Mindestens eine Bedingung muss wahr sein (ODER-Logik)
items(array) - Array von Bedingungen (können Vergleiche oder verschachtelte Ketten sein)not(boolean, optional) - Invertiert das gesamte Kettenergebnisname(string, optional) - Menschenlesbare Bezeichnung zur Dokumentation
Beispiele
Umfrage für zufriedene Kunden überspringen
{
"type": "FlowControl",
"data": {
"condition": {
"type": "condition",
"fact": "questions/nps",
"operator": "gte",
"compare": { "value": 9 }
},
"action": {
"type": "survey-finish"
}
}
}
Seite nur für bestimmte Altersgruppe anzeigen
{
"collections": {
"teen-questions": {
"name": "Fragen für Teenager",
"condition": {
"type": "all",
"items": [
{
"type": "condition",
"fact": "questions/age",
"operator": "gte",
"compare": { "value": 13 }
},
{
"type": "condition",
"fact": "questions/age",
"operator": "lt",
"compare": { "value": 20 }
}
]
},
"elements": {
/* ... */
}
}
}
}
Komplexe verschachtelte Bedingungen
{
"type": "any",
"name": "Premium-Nutzer oder Viel-Ausgeber",
"items": [
{
"type": "condition",
"fact": "questions/membership",
"operator": "eq",
"compare": { "value": "premium" }
},
{
"type": "all",
"items": [
{
"type": "condition",
"fact": "questions/total-spent",
"operator": "gt",
"compare": { "value": 1000 }
},
{
"type": "condition",
"fact": "questions/active-months",
"operator": "gte",
"compare": { "value": 6 }
}
]
}
]
}
Vergleich zweier Fakten
{
"type": "condition",
"fact": "questions/current-salary",
"operator": "gt",
"compare": { "fact": "questions/desired-salary" }
}
Verwendung der not-Eigenschaft
{
"type": "condition",
"fact": "questions/email-consent",
"operator": "true",
"not": true // Invertiert das Ergebnis: wahr, wenn email-consent NICHT wahr ist
}
Versionshistorie
| Version | Datum | Änderungen |
|---|---|---|
| 1.0 | 15.11.2025 | Payment-Element |
| 0.5 | 24.01.2025 | Erste öffentliche Freigabe |