SIMDATA

API REFERENCE

GET /v1/catalog

Inspect and manage the dictionary definitions for your account.

Catalog structure

A dictionary pack contains distinct entity kinds:

  • records: Root entities that can be sampled directly via GET /v1/random/{record} (e.g. Record(pizzaOrder), Record(person)).
  • fragments: Child sub-records and composite types embedded inside other records (e.g. Fragment(pizzaItem), Fragment(address)). Fragments compile into parent schemas without requiring standalone root sampling.
  • sets: Discrete categorical value lists, weighted pools, and multi-column lookup tables (e.g. Set(name)). Values must be declared one per line.
  • sequences: Templated sequential ID generators (e.g. Seq(name)) using two-line declarations (start <n> and template <fmt>).
  • distributions: Continuous and discrete probability densities (e.g. uniform(min, max), bernoulli(p), normal(mu, sigma), categorical).

DSL syntax patterns

1. Root Records vs. Child Fragments

Use Record(...) for entities you intend to sample directly via the API. Use Fragment(...) for child objects or line items embedded in parent records:

# Child fragment (embedded in order)
Fragment(pizzaItem)
size        1    Set(pizzaSize)
crust       1    Set(crustType)
price       1    uniform(12.99, 26.99)

# Root record (sampleable via GET /v1/random/pizzaOrder)
Record(pizzaOrder)
orderId     1    Seq(orderId)
items       1..4 Fragment(pizzaItem)
notes       0..1 Set(specialInstructions)

2. Sets (Multiline Syntax)

Each value in a Set(...) must be placed on its own line. Space-separated items on a single line are parsed as a single literal multi-word value:

Set(pizzaToppings)
Pepperoni
Spicy Sausage
Fresh Basil
Kalamata Olives

3. Sequences (Multiline Syntax)

A sequence requires two separate configuration lines for initial counter offset and format template:

Seq(orderNumber)
start 1001
template ORD-{n:05}

Catalog endpoints

Endpoint Method Description
/v1/catalog GET Returns manifest and list of all entries in your workspace.
/v1/catalog/{kind} GET List entries for a specific kind (sets, records, distributions, sequences).
/v1/catalog/{kind}/{id} GET Retrieve raw source definition and compiled metadata for an entry.
/v1/catalog/{kind}/{id} PUT Update an entry definition with immediate syntax and type validation.
/v1/catalog/batch POST Atomically validate, compile, and publish multiple dictionary definitions in a single request. Body: { "entries": [...] }.