Skip to main content
A declarative data language

Data that follows the rules.

Generate realistic datasets, validate relationships, and build domain-specific workflows on the same language core.

Declare the shape. Vague handles the rest.

Describe structure, constraints, distributions, and relationships. Vague generates data that follows the rules.

  • Weighted distributions: 0.8: "active" | 0.2: "inactive"
  • Constraints: assume due_date >= issued_date
  • Cross-references: any of customers where .status == "active"
  • Computed fields: total: sum(line_items.amount)
example.vague
schema Customer {
id: uuid(),
name: fullName(),
status: 0.8: "active" | 0.2: "inactive"
}

schema Invoice {
customer: any of customers where .status == "active",
amount: decimal in 100..10000,
issued_date: date in 2024..2024,
due_date: date in 2024..2024,

assume due_date >= issued_date
}

dataset TestData {
customers: 50 of Customer,
invoices: 200 of Invoice
}

The language core goes further than fixtures.

Vague exposes its lexer, expression system, schemas, constraints, and plugin hooks for specialized declarative languages.

Reqon uses that foundation to define durable API synchronization pipelines with validation, concurrency, scheduling, and resumable execution.

Explore Reqon
Built on VagueReqon

A declarative language for fetching, transforming, validating, and storing API data.

Durable API workflowsReqon syntax and runtimeVague language core

Useful data, not random noise.

Generate realistic test data that respects your constraints and relationships.

01

Declarative schemas

Define the shape of your data once. Schemas describe structure, types, ranges, and constraints — Vague handles generation.

02

Realistic distributions

Express intent with weighted choices: 0.8: "active" | 0.2: "inactive". Statistical distributions like gaussian, poisson, and beta for realistic patterns.

03

Constraints that work

Hard constraints like assume due_date >= issued_date are enforced. Conditional constraints for complex business logic.

04

Cross-record references

Reference other records naturally: customer: any of customers where .status == "active". Build realistic relational data.

05

OpenAPI integration

Import schemas from OpenAPI specs. Validate generated data. Populate specs with realistic examples.

06

Edge-case testing

Built-in generators for Unicode exploits, SQL injection patterns, and boundary values. Generate constraint-violating data with violating datasets.