Avatud Küsitluse Formaat

Avatud, JSON-põhine formaat küsitluste ja vormide defineerimiseks. Kasutusel YourOpinion.is platvormil ja kõigile vabalt implementeeritav.

Praegune versioon: 1.0 (Avaldatud: 15. november 2025)

Laadi spetsifikatsioon alla

  • JSON-skeem - masinloetav formaadi definitsioon
  • Markdown - inimloetav dokumentatsioon (optimeeritud LLM-ide jaoks)

Sissejuhatus

Avatud Küsitluse Formaat pakub standardiseeritud viisi küsitluste, ankeetide ja vormide defineerimiseks JSON-objektidena. See formaat võimaldab:

  • Liikuvust platformide vahel - küsitluste liigutamist erinevate platvormide ja tööriistade vahel
  • Versioonikontrolli - küsitluse muudatuste jälgimist standardsete diff-tööriistadega
  • Programmilist genereerimist - küsitluste dünaamilist loomist koodi abil
  • LLM-ühilduvust - tehisintellekti assistendid saavad hõlpsasti küsitlusi luua ja muuta

Põhimõisted

Kogumikud (leheküljed)

Küsitlused on organiseeritud kogumikesse, mis toimivad lehekülgede või jaotistena. Iga küsitlus peab sisaldama vähemalt ühte kogumikku.

Elemendid

Individuaalsed komponendid kogumiku sees, näiteks:

  • Küsimused (tekstisisestus, valikvastused, hinnangud jne)
  • Sisuplokid (Markdown-tekst, pildid)
  • Juhtvoo elemendid (tingimusloogika, lehekülje vahetused)

Jagatud varad

Taaskasutatavad komponendid, millele saab viidata mitmest küsimusest:

  • Valikute loendid (valikküsimuste jaoks)
  • Hinnanguskaalad
  • Jagatud ressursid

Dokumendi struktuur

Küsitlus on esitatud JSON-objektina, millel on järgmine struktuur:

{
    "$schema": "https://youropinion.is/json-schema/1.0",
    "$readme": "https://youropinion.is/docs/survey-format.md",
    "collections": {
        "collection-id-1": {
            "name": "Kogumiku nimi",
            "elements": {
                "element-id-1": {
                    "type": "Markdown",
                    "data": {
                        /* Elemendispetsiifilised andmed */
                    }
                }
            },
            "displayOrder": ["element-id-1"]
        }
    },
    "displayOrder": ["collection-id-1"],
    "assets": {
        "asset-id-1": {
            "type": "options",
            "data": {
                /* Varaspetsiifilised andmed */
            }
        }
    }
}

Ülataseme atribuudid

$schema (valikuline)

URL valideerimiseks mõeldud JSON-skeemi definitsioonile:

"$schema": "https://youropinion.is/json-schema/1.0"

$readme (valikuline)

URL inimloetavale dokumentatsioonile:

"$readme": "https://youropinion.is/docs/survey-format.md"

collections (kohustuslik)

Objekt, mis sisaldab küsitluse lehekülgi/jaotisi. Iga võti on unikaalne kogumiku ID:

"collections": {
    "welcome": {
        "name": "Tervitusleht",
        "elements": { /* ... */ },
        "displayOrder": ["intro", "consent"]
    },
    "questions": {
        "name": "Põhiküsimused",
        "elements": { /* ... */ },
        "displayOrder": ["q1", "q2", "q3"]
    }
}

Kogumiku atribuudid:

  • name (string, valikuline) - inimloetav kogumiku nimi (ei kuvata kasutajatele, kasutatakse viitamiseks)
  • condition (objekt, valikuline) - tingimusloogika, mis määrab, kas seda kogumikku kuvada (vt jaotist Tingimusloogika)
  • elements (objekt) - sisaldab selle kogumiku elemente. Iga võti on unikaalne elemendi ID
  • displayOrder (massiiv) - elementide ID-de massiiv, mis määrab kuvamise järjekorra

Oluline: displayOrder-massiiv toimib nii filtri kui ka järjestajana:

  • Kuvatakse ainult displayOrder-massiivis loetletud elemente.
  • Elemendid, mis ei ole displayOrder-massiivis, jäävad definitsiooni alles, kuid on peidetud.
  • Olematu elemendi ID lisamine põhjustab vea.

displayOrder (kohustuslik)

Massiiv, mis määrab kogumike järjekorra:

"displayOrder": ["welcome", "questions", "thank-you"]

Kehtivad samad filtreerimisreeglid: kuvatakse ainult siin loetletud kogumikke.

assets (valikuline)

Taaskasutatavad komponendid, millele viitavad mitmed elemendid. Varad vähendavad kordusi ja muudavad küsitluste haldamise lihtsamaks.

Varade tüübid:

  1. options - taaskasutatavad valikute loendid SelectOne/SelectMany-küsimuste jaoks
  2. ordinal-scale - taaskasutatavad sildistatud skaalad OrdinalScale-küsimuste jaoks
  3. interval-scale - taaskasutatavad numbrilised skaalad IntervalScale-küsimuste jaoks

Näide - valikute vara:

"assets": {
    "color-options": {
        "type": "options",
        "name": "Värvivalikud",
        "data": {
            "options": {
                "red": { "label": "Punane" },
                "blue": { "label": "Sinine" },
                "green": { "label": "Roheline" },
                "yellow": { "label": "Kollane" }
            },
            "displayOrder": ["red", "blue", "green", "yellow"]
        }
    },
    "satisfaction-scale": {
        "type": "ordinal-scale",
        "name": "Standardne rahuloluskaala",
        "data": {
            "labels": {
                "1": "Väga rahulolematu",
                "2": "Rahulolematu",
                "3": "Neutraalne",
                "4": "Rahul",
                "5": "Väga rahul"
            }
        }
    },
    "nps-scale": {
        "type": "interval-scale",
        "name": "Soovitusindeksi (NPS) skaala",
        "data": {
            "start": 0,
            "end": 10,
            "labels": {
                "start": "Ebatõenäoline",
                "end": "Väga tõenäoline"
            }
        }
    }
}

Kõik varade tüübid nõuavad:

  • type - vara tüüp: "options", "ordinal-scale" või "interval-scale"
  • name - inimloetav nimi dokumenteerimise eesmärgil
  • data - tüübispetsiifiline andmestruktuur

Varadele saab viidata JSON-viidete abil (vt jaotist JSON-viited).


Elemendi tüübid

Elemendid on teie küsitluse ehitusplokid. Igal elemendil on atribuudid type ja data. Kõik elemendid võivad valikuliselt sisaldada extensions-objekti kohandatud metaandmete jaoks (standardne renderdaja seda ei kasuta).

Saadaolevad elemendi tüübid:

TüüpKategooriaKirjeldus
MarkdownSisuVormindatud teksti ja sisu kuvamine
FlowControlJuhtimineTingimusloogika ja navigeerimine
StringKüsimusTekstisisestus (ühe- või mitmerealine)
NumberKüsimusNumbriline sisestus
DateKüsimusKuupäevavalija
BooleanKüsimusJah/Ei-märkeruut
SelectOneKüsimusÜks valik valikute hulgast (raadionupud)
SelectManyKüsimusMitu valikut valikute hulgast (märkeruudud)
IntervalScaleKüsimusNumbriline hinnanguskaala (nt 0-10 NPS-i jaoks, 1-5 rahulolu jaoks)
OrdinalScaleKüsimusSildistatud hinnanguskaala (nt „Täiesti mittenõus“ kuni „Täiesti nõus“)
PaymentKüsimusMakse töötlemise element

Sisu elemendid

Markdown

Kuvab vormindatud teksti, pealkirju, loendeid ja muud sisu, kasutades Markdowni süntaksit.

{
    "type": "Markdown",
    "data": {
        "markdown": "# Tere tulemast!\n\nAitäh, et osalete meie küsitluses.\n\n- Palun vastake ausalt.\n- Kõik vastused on anonüümsed."
    }
}

Toetatud Markdown:

  • Pealkirjad (#, ##, ###)
  • Loendid (järjestatud ja järjestamata)
  • Paks kiri (**tekst**) ja kaldkiri (*tekst*)
  • Lingid ([tekst](url))
  • Koodiplokid

FlowControl

Kontrollib küsitluse voogu tingimusloogika ja navigeerimisega.

{
    "type": "FlowControl",
    "data": {
        "condition": {
            /* Valikuline - vt jaotist Tingimusloogika */
        },
        "action": {
            "type": "survey-finish" // Valikud: "survey-finish" või "page-finish"
        }
    }
}

Tegevuste tüübid:

  • survey-finish - lõpetab küsitluse kohe
  • page-finish - lõpetab praeguse lehekülje ja liigub järgmisele

Täpsema teabe saamiseks tingimuse struktuuri ja näidete kohta vt allpool olevat jaotist Tingimusloogika.


Küsimuste tüübid

Kõigil küsimustel on järgmised ühised atribuudid:

{
    "type": "QuestionType",
    "data": {
        "label": "Teie küsimuse tekst siin",
        "required": "yes", // Valikuline: "yes", "no" või "suggested" (vaikimisi on "no")
        "markdown": "Abistav tekst" // Valikuline: täiendav kontekst Markdownis
    }
}

Ühised atribuudid:

  • label (string, kohustuslik) - küsimuse tekst, mida kasutajatele kuvatakse
  • required (string, valikuline) - kas vastus on kohustuslik: "yes", "no" või "suggested" (kuvatakse valikulisena, kuid on soovitatav)
  • markdown (string, valikuline) - täiendav abistav tekst või kirjeldus Markdown-vormingus
  • defaultValue (any, valikuline) - küsimuse eelnevalt täidetud väärtus

String

Ühe- või mitmerealine tekstisisestus.

{
    "type": "String",
    "data": {
        "label": "Mis on teie nimi?",
        "placeholder": "Sisestage oma täisnimi", // Valikuline
        "multiline": false, // Valikuline: true mitmerealise tekstivälja jaoks
        "required": "yes"
    }
}

Number

Numbriline sisestus valikulise valideerimisega.

{
    "type": "Number",
    "data": {
        "label": "Mitu töötajat?",
        "min": 1, // Valikuline: minimaalne väärtus
        "max": 1000, // Valikuline: maksimaalne väärtus
        "step": 1, // Valikuline: sammu suurus (vaikimisi: 1)
        "required": "yes"
    }
}

Atribuudid:

  • min (number, valikuline) - minimaalne lubatud väärtus
  • max (number, valikuline) - maksimaalne lubatud väärtus
  • step (number, valikuline) - sisendi valideerimiseks kasutatav sammu suurus (vaikimisi: 1)

Date

Kuupäevavalija sisestus valikulise täpsustaseme ning miinimum- ja maksimumpiirangutega.

{
    "type": "Date",
    "data": {
        "label": "Millal te liitusite?",
        "required": "suggested",
        "accuracy": "day", // Valikuline: "day", "month" või "year" (vaikimisi: "day")
        "min": "2020-01-01", // Valikuline: varaseim valitav kuupäev
        "max": "2025-12-31" // Valikuline: hiliseim valitav kuupäev
    }
}

Atribuudid:

  • accuracy (string, valikuline) - kuupäeva täpsuse tase:
    • "day" - täielik kuupäevavalija kalendriga (vaikimisi)
    • "month" - kuu ja aasta rippmenüü valik
    • "year" - ainult aasta rippmenüü valik
  • min (string, valikuline) - varaseim valitav kuupäev. Võib olla:
    • ISO-kuupäeva string (nt "2020-01-01")
    • Suhteline aja string (nt "+ 3 months", "now", "- 1 year")
  • max (string, valikuline) - hiliseim valitav kuupäev. Samad vorminguvalikud nagu min.

Boolean

Jah/Ei-märkeruut. Vaikimisi väärtus on false (märkimata).

{
    "type": "Boolean",
    "data": {
        "label": "Kasutustingimused",
        "description": "Nõustun kasutustingimustega" // Kuvatakse märkeruudu kõrval
    }
}

SelectOne

Valikvastustega küsimus (raadionupud) - kasutajad valivad ühe valiku.

{
    "type": "SelectOne",
    "data": {
        "label": "Mis on teie lemmikvärv?",
        "required": "yes",
        "options": {
            "options": {
                "red": { "label": "Punane" },
                "blue": { "label": "Sinine" },
                "green": { "label": "Roheline" }
            },
            "displayOrder": ["red", "blue", "green"]
        }
    }
}

Vara viidete kasutamine:

{
    "type": "SelectOne",
    "data": {
        "label": "Valige värv",
        "options": { "$ref": "#/assets/color-options/data" }
    }
}

SelectMany

Valikvastustega küsimus (märkeruudud) - kasutajad saavad valida mitu valikut.

{
    "type": "SelectMany",
    "data": {
        "label": "Milliseid operatsioonisüsteeme te kasutate?",
        "required": "yes",
        "options": {
            "options": {
                "windows": { "label": "Windows" },
                "macos": { "label": "macOS" },
                "linux": { "label": "Linux" }
            },
            "displayOrder": ["windows", "macos", "linux"]
        },
        "other": true, // Valikuline: lisab valiku "Muu" koos tekstisisestuse väljaga
        "minSelections": 1, // Valikuline: minimaalne nõutav valikute arv
        "maxSelections": 3 // Valikuline: maksimaalne lubatud valikute arv
    }
}

IntervalScale

Numbriline hinnanguskaala määratletud vahemikuga (nt 0-10 NPS-i jaoks, 1-5 rahulolu jaoks). Tavaliselt kasutatakse:

  • Soovitusindeks (NPS): 0-10 skaala
  • Rahuloluhinnangud: 1-5 või 1-7 skaala
  • Tõenäosusküsimused: 0-10 skaala
{
    "type": "IntervalScale",
    "data": {
        "label": "Kui tõenäoliselt te soovitaksite meid sõbrale?",
        "required": "yes",
        "scale": {
            "start": 0, // Skaala algusnumber
            "end": 10, // Skaala lõppnumber
            "labels": {
                // Sildid algus- ja lõpp-punktide jaoks (kohustuslik)
                "start": "Üldse mitte tõenäoline",
                "end": "Äärmiselt tõenäoline"
            }
        }
    }
}

Levinud kasutusjuhud:

// Soovitusindeks (NPS)
{
    "type": "IntervalScale",
    "data": {
        "label": "Kui tõenäoliselt te meid soovitaksite?",
        "scale": {
            "start": 0,
            "end": 10,
            "labels": {
                "start": "Ebatõenäoline",
                "end": "Väga tõenäoline"
            }
        }
    }
}

// 5-punktine rahuloluskaala
{
    "type": "IntervalScale",
    "data": {
        "label": "Kui rahul te olete meie teenusega?",
        "scale": {
            "start": 1,
            "end": 5,
            "labels": {
                "start": "Väga rahulolematu",
                "end": "Väga rahul"
            }
        }
    }
}

Kuvamine: Näitab horisontaalset skaalat klõpsatavate numbritega. Sildid ilmuvad algus- ja lõpp-punktide alla.

OrdinalScale

Sildistatud hinnanguskaala, kus igal punktil on kohandatud silt. Ideaalne:

  • Likerti skaalad, kus igal punktil on konkreetne sõnastus
  • Nõusolekuskaalad („Täiesti mittenõus“ → „Täiesti nõus“)
  • Sagedusskaalad („Mitte kunagi“ → „Alati“)
  • Kohandatud hinnanguskaalad tähenduslike siltidega
{
    "type": "OrdinalScale",
    "data": {
        "label": "Kui rahul te olete oma positsiooniga?",
        "required": "yes",
        "scale": {
            "labels": {
                "1": "Väga rahulolematu",
                "2": "Rahulolematu",
                "3": "Neutraalne",
                "4": "Rahul",
                "5": "Väga rahul"
            }
        }
    }
}

Levinud kasutusjuhud:

// Likerti nõusolekuskaala
{
    "type": "OrdinalScale",
    "data": {
        "label": "Toode vastas minu ootustele.",
        "scale": {
            "labels": {
                "1": "Täiesti mittenõus",
                "2": "Mittenõus",
                "3": "Ei nõustu ega ole vastu",
                "4": "Nõus",
                "5": "Täiesti nõus"
            }
        }
    }
}

// Sagedusskaala
{
    "type": "OrdinalScale",
    "data": {
        "label": "Kui tihti te meie toodet kasutate?",
        "scale": {
            "labels": {
                "1": "Mitte kunagi",
                "2": "Harva",
                "3": "Mõnikord",
                "4": "Tihti",
                "5": "Alati"
            }
        }
    }
}

Kuvamine: Näitab sildistatud nuppe või valikuid. Iga silt kuvatakse täielikult, muutes skaala iseenesestmõistetavaks.

IntervalScale versus OrdinalScale:

  • Kasuta IntervalScale’i, kui numbritel endil on tähendus (0-10, 1-5).
  • Kasuta OrdinalScale’i, kui vajad iga punkti jaoks kohandatud silte.
  • IntervalScale on kompaktsem; OrdinalScale on kirjeldavam.

Payment

Kogub makseandmeid ja töötleb tehinguid. Integreerub makseteenuse pakkujatega, mis on konfigureeritud teie küsitluse seadetes.

{
    "type": "Payment",
    "data": {
        "label": "Makse",
        "required": "yes",
        "amount": {
            "value": 29.99,
            "currency": "USD"
        },
        "captureMethod": "automatic" // Valikuline: "immediate", "manual" või "automatic"
    }
}

Atribuudid:

  • amount (objekt, kohustuslik) - maksesumma koos value (number) ja currency (kolmetäheline kood, nt „USD“, „EUR“, „GBP“) atribuutidega
  • captureMethod (string, valikuline) - millal makse broneerida:
    • "immediate" - broneerib makse kohe pärast küsitluse esitamist
    • "manual" - nõuab käsitsi broneerimist maksete halduspaneeli kaudu
    • "automatic" - broneerib makse automaatselt pärast küsitluse lõpetamist (vaikimisi)

Märkus: Maksete töötlemine nõuab, et teie kanali seadetes oleks konfigureeritud makseteenuse pakkuja. Toetatud valuutad ja makseviisid sõltuvad teie teenusepakkuja konfiguratsioonist.


JSON-viited

Vähendage kordusi, viidates taaskasutatavatele komponentidele. Viited kasutavad järgmist vormingut:

{ "$ref": "[<asukoht>]#<tee>" }
  • asukoht - URL lähtedokumendile (tühi = praegune dokument)
  • tee - tee dokumendi juurest, kasutades / eraldajaid

Näide - reasisene kordus:

{
    "question-1": {
        "type": "SelectOne",
        "data": {
            "label": "Lemmikvärv?",
            "options": {
                "options": {
                    "red": { "label": "Punane" },
                    "blue": { "label": "Sinine" }
                },
                "displayOrder": ["red", "blue"]
            }
        }
    },
    "question-2": {
        "type": "SelectOne",
        "data": {
            "label": "Kõige vähem meeldiv värv?",
            "options": {
                "options": {
                    "red": { "label": "Punane" },
                    "blue": { "label": "Sinine" }
                },
                "displayOrder": ["red", "blue"]
            }
        }
    }
}

Parem - varade kasutamine:

{
    "collections": {
        "main": {
            "elements": {
                "question-1": {
                    "type": "SelectOne",
                    "data": {
                        "label": "Lemmikvärv?",
                        "options": { "$ref": "#/assets/colors/data" }
                    }
                },
                "question-2": {
                    "type": "SelectOne",
                    "data": {
                        "label": "Kõige vähem meeldiv värv?",
                        "options": { "$ref": "#/assets/colors/data" }
                    }
                }
            },
            "displayOrder": ["question-1", "question-2"]
        }
    },
    "assets": {
        "colors": {
            "type": "options",
            "data": {
                "options": {
                    "red": { "label": "Punane" },
                    "blue": { "label": "Sinine" }
                },
                "displayOrder": ["red", "blue"]
            }
        }
    }
}

Eelised:

  • Ühtne andmeallikas
  • Lihtsam hooldus
  • Selgemad versioonikontrolli võrdlused
  • Väiksem failimaht

Tingimusloogika

Tingimusloogika võimaldab luua dünaamilisi küsitlusi, mis kohanduvad vastavalt kasutaja vastustele. Tingimusi saab kasutada kahel viisil:

1. Kogumiku taseme tingimused

Tervete lehekülgede kuvamine või peitmine tingimuste alusel. Kui kogumiku tingimus annab tulemuseks false, jäetakse terve lehekülg vahele ja liigutakse edasi järgmise kogumiku juurde.

{
    "collections": {
        "follow-up": {
            "name": "Järelküsimused",
            "condition": {
                "type": "condition",
                "fact": "questions/nps-score",
                "operator": "lt",
                "compare": { "value": 7 }
            },
            "elements": {
                /* ... */
            },
            "displayOrder": ["question-1"]
        }
    }
}

Selles näites kuvatakse „Järelküsimuste“ lehekülg ainult siis, kui NPS-skoor on väiksem kui 7.

2. FlowControl-elemendid

Küsitluse voo juhtimine lehekülje sees FlowControl-elementide abil. Kui tingimus annab tulemuseks true, viiakse määratud tegevus ellu.

Saadaolevad tegevused:

  • survey-finish - lõpetab küsitluse kohe (jätab kõik ülejäänud leheküljed vahele)
  • page-finish - lõpetab praeguse lehekülje ja liigub järgmisele (jätab ülejäänud elemendid praegusel leheküljel vahele)
{
    "type": "FlowControl",
    "data": {
        "condition": {
            "type": "condition",
            "fact": "questions/satisfaction",
            "operator": "eq",
            "compare": { "value": "very-satisfied" }
        },
        "action": {
            "type": "page-finish"
        }
    }
}

Märkus: Kui condition pole määratud, täidetakse tegevus alati, kui elemendini jõutakse.

Tingimuse struktuur

Tingimused on defineeritud binaarpuuna, millel on kaks sõlmetüüpi:

1. Võrdlustingimused

Võrdleb fakti (küsitluse vastust) väärtuse või teise faktiga.

{
    "type": "condition",
    "fact": "questions/age",
    "operator": "gt",
    "compare": { "value": 18 }
}

Atribuudid:

  • type - võrdluste puhul alati "condition"
  • fact (string) - elemendi viide formaadis ‘collection-id/element-id’, kust väärtust lugeda
  • operator (string) - võrdlusoperaator (vt operaatoreid allpool)
  • compare (objekt, valikuline) - millega võrrelda:
    • { "value": <any> } - võrdleb literaalse väärtusega
    • { "fact": "<collection-id>/<element-id>" } - võrdleb teise elemendi väärtusega
    • Pole nõutav operaatorite puhul nagu "exists" või "true"
  • not (boolean, valikuline) - pöörab tulemuse vastupidiseks (vaikimisi: false)

Toetatud operaatorid elemendi tüübi järgi:

Number, IntervalScale, OrdinalScale, Date:

  • "eq" - võrdne
  • "gt" - suurem kui
  • "gte" - suurem või võrdne kui
  • "lt" - väiksem kui
  • "lte" - väiksem või võrdne kui
  • "exists" - omab väärtust (ei vaja compare’i)

String:

  • "eq" - võrdne
  • "contains" - string sisaldab väärtust
  • "exists" - omab väärtust (ei vaja compare’i)

Boolean:

  • "true" - väärtus on tõene (ei vaja compare’i)
  • "exists" - omab väärtust (ei vaja compare’i)

SelectOne:

  • "eq" - võrdne konkreetse valikuga
  • "in" - on üks mitmest valikust (võrdlusväärtus peab olema SelectMany formaadis)
  • "exists" - omab väärtust (ei vaja compare’i)

SelectMany:

  • "eq" - vastab täpselt valikute komplektile
  • "exists" - omab vähemalt ühte väärtust (ei vaja compare’i)

2. Aheltingimused

Kombineerib mitu tingimust loogiliste operaatorite abil.

{
    "type": "all",
    "items": [
        {
            "type": "condition",
            "fact": "questions/age",
            "operator": "gt",
            "compare": { "value": 18 }
        },
        {
            "type": "condition",
            "fact": "questions/country",
            "operator": "eq",
            "compare": { "value": "US" }
        }
    ]
}

Atribuudid:

  • type - loogiline operaator:
    • "all" - kõik tingimused peavad olema tõesed (AND-loogika)
    • "any" - vähemalt üks tingimus peab olema tõene (OR-loogika)
  • items (massiiv) - tingimuste massiiv (võivad olla võrdlused või pesastatud ahelad)
  • not (boolean, valikuline) - pöörab kogu ahela tulemuse vastupidiseks
  • name (string, valikuline) - inimloetav silt dokumenteerimiseks

Näited

Rahulolevate klientide puhul küsitluse vahelejätmine

{
    "type": "FlowControl",
    "data": {
        "condition": {
            "type": "condition",
            "fact": "questions/nps",
            "operator": "gte",
            "compare": { "value": 9 }
        },
        "action": {
            "type": "survey-finish"
        }
    }
}

Lehekülje kuvamine ainult kindlale vanusegrupile

{
    "collections": {
        "teen-questions": {
            "name": "Küsimused teismelistele",
            "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": {
                /* ... */
            }
        }
    }
}

Keerukad pesastatud tingimused

{
    "type": "any",
    "name": "Premium-kasutajad või suured kulutajad",
    "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 }
                }
            ]
        }
    ]
}

Kahe fakti võrdlemine

{
    "type": "condition",
    "fact": "questions/current-salary",
    "operator": "gt",
    "compare": { "fact": "questions/desired-salary" }
}

Atribuudi not kasutamine

{
    "type": "condition",
    "fact": "questions/email-consent",
    "operator": "true",
    "not": true // Pöörab tulemuse vastupidiseks: tõene, kui email-consent EI ole tõene
}

Versiooniajalugu

VersioonKuupäevMuudatused
1.015.11.2025Makse element
0.524.01.2025Esimene avalik väljalase