Simuli.io

Configurator playground

Configuration
Constraints
POST https://api.simuli.io/v1/config/state
Response
Click "Execute Request" to test the API

About Simuli.io

Simuli.io is a powerful configuration management system that helps you define and validate complex product configurations with business rules and constraints.

How it works:

  • Features: Define your product features and their possible states (e.g., SaddleHeight: LOW, MEDIUM, HIGH)
  • Relationships: Create business rules using CEL (Common Expression Language) or jsonlogic to link features together
  • Constraints: Apply specific constraints to test configuration validity

Getting started:

  1. Define your product features and their feature types in the Configuration editor
  2. Add relationships using CEL expressions to define business rules that constrain the configuration space
  3. Set constraints to specify your current feature selections and preferences
  4. Click "Execute Request" to see the resulting configuration state space - the remaining valid configuration options based on your constraints and business rules
💡 Example: The current configuration shows a bicycle with saddle height and shaft length features. The relationship rule ensures that when saddle height is not LOW, the shaft length must be MEDIUM. When you add constraints (like selecting a specific saddle height), the system will show you the valid remaining options for other features.

Constraints types:

Constraints can be defined in two ways, either using conditional strings, or using jsonlogic.
Conditional strings:
{
                        "format" : "cel",
                        "if" : "(saddle_height != \"LOW\")",
                        "then": "(shaft_length == \"MEDIUM\")"
                        }

Conditional strings are simple strings that are evaluated to true or false. They are used to test the configuration space.

Jsonlogic:

Jsonlogic is a more powerful way to define constraints. It is a JSON-based language that allows you to define complex constraints using a combination of operators and functions.

{
                        "format" : "jsonlogic",
                        "if" : {"==" : [ { "var" : "saddle_height" }, "LOW" ] },
                        "then": {"==" : [ { "var" : "shaft_length" }, "MEDIUM" ] }
                        }

Keyboard Shortcuts:

  • Cmd+Enter (Mac) or Ctrl+Enter (Windows/Linux) - Execute the current configuration