Schema
A schema defines the structure and content of an effect's events. Consider the following schema definition:
type: object
properties:
email:
type: function
expression: username + '@' + domain
variables:
username:
type: string
maxLength: 10
domain:
type: enum
enum:
- example.com
- example.org
age:
type: integer
minimum: 0
maximum: 120It will endlessly produce values that look like this:
{ "email": "kjandfa@example.com", "age": 16 }
{ "email": "9jsm348vk@example.org", "age": 77 }
{ "email": "111//??@example.org", "age": 58 }The first thing to note is that every schema definition must specify a type field, which acts as a discriminant — i.e., it determines the other fields that may be specified in the definition.
In the above example, the top-level definition has type object, which requires a properties parameter, while the age property has typeinteger, which accepts optionalminimum andmaximum parameters.
The second thing to note is that schema types are composable — some "higher level" schema types accept other schema definitions as parameters.
In the above example, we specify schemas in the variables parameter of the function schema definition which is itself specified as part of the properties parameter of the top-level object schema definition.
See the schema reference for all available schemas.