Skip to content
Endatix
Persistence

JSON Forms & Submissions

SurveyJS-compatible JSON schemas. No coding or database migrations needed when you build a new form or change single a question.

Form Definition formDefinition.json
{
  "title": "Patient Intake",
  "pages": [{
    "elements": [
      {
        "type": "text",
        "name": "firstName",
        "title": "First name"
      },
      {
        "type": "dropdown",
        "name": "visitReason",
        "title": "Reason for visit",
        "choices": [
          "Routine checkup",
          "Follow-up",
          "Urgent care"
        ]
      },
      {
        "type": "boolean",
        "name": "hasAllergies",
        "title": "Do you have allergies?"
      },
      {
        "type": "text",
        "name": "allergyDetails",
        "title": "Please describe your allergies",
        "visibleIf": "{hasAllergies} = true",
        "isRequired": "{hasAllergies} = true"
      }
    ]
  }]
}
Submission Data submission.json
{
  "firstName": "Alex",
  "visitReason": "Follow-up",
  "hasAllergies": true
}

Forms that are not hardcoded

The entire form lives in a database record. One JSON object captures what a form looks like, how it behaves, and what it accepts.

  • Form layout (pages, panels, columns, etc.)
  • Default values
  • Validation rules
  • Conditional logic
  • Calculated values and expressions
  • Navigation options
  • Translations
  • Themes (colors, fonts, borders, logos, etc.)

Enterprise-grade scalability

Submission JSON objects are persisted to a relational database and linked to the form versions they were collected against.

  • GIN-indexed JSONB queries on PostgreSQL
  • OPENJSON row expansion for MS SQL reporting
  • Horizontal scaling on your existing database

Portability between environments

A form definition is a single JSON object. That makes it trivial to promote between environments or hand off to another team.

  • Manually export JSON form definitions
  • Automate JSON transfers through the API
  • Promote dev → staging → production without migrations

Supported databases

Endatix uses EF Core - no document store, no secondary infrastructure. Choose the relational database you already run.

PostgreSQL
JSONB + GIN index
  • Binary JSON storage
  • GIN-indexed for fast queries
  • json_path_query support
  • Full-text search ready
MS SQL Server or Azure SQL
NVARCHAR + JSON functions
  • JSON_VALUE / JSON_QUERY / OPENJSON
  • Row expansion for SQL reporting
  • Fully managed on Azure SQL
  • Elastic scale & geo-replication

Why JSON-first storage

Schema-flexible storage is a deliberate design choice - not a workaround.

Schema Evolution Without Migrations

Add, remove, or rename a question in SurveyJS and save. No ALTER TABLE, no migration file, no deployment window. Existing submissions are unaffected.

Queryable with Standard SQL

PostgreSQL JSONB supports GIN-indexed queries. MS SQL exposes JSON_VALUE and JSON_QUERY. Filter and aggregate submission data without an ORM or external search engine.

Form Versioning Built In

Each form has one active version (the form definition). Historical submissions always reference the schema that was active when they were created, so reporting never breaks.

JSON-native storage

Forms that evolve without downtime.

Change your SurveyJS form schema any time - no schema migrations, no breaking changes to historical data.