seisei_schema
Structured output schemas and validation helpers for Seisei.
This package validates JSON-compatible model output before application code decodes it into typed Dart values. It provides object-schema validation with strings, integers, numbers, booleans, arrays, optional fields, nested objects, string enums, field-level unions with explicit null variants, discriminated object unions, numeric ranges, string patterns, and array size constraints.
const schema = ObjectSchema(
name: 'Draft',
fields: {
'author': ObjectField.object(
schema: ObjectSchema(
name: 'Author',
fields: {
'name': ObjectField.string(pattern: r'^[A-Z][a-z]+$'),
},
),
),
'contact': ObjectField.union(
isRequired: false,
variants: [
ObjectField.string(),
ObjectField.nullValue(),
ObjectField.object(
schema: ObjectSchema(
name: 'Address',
fields: {
'city': ObjectField.string(),
},
),
),
],
),
'message': ObjectField.discriminatedUnion(
discriminatorKey: 'kind',
variants: {
'note': ObjectSchema(
name: 'NoteMessage',
fields: {'text': ObjectField.string()},
),
},
),
'status': ObjectField.string(enumValues: ['draft', 'published']),
'title': ObjectField.string(),
'count': ObjectField.integer(minimum: 0, maximum: 10),
'published': ObjectField.boolean(),
'tags': ObjectField.string(
isArray: true,
isRequired: false,
minItems: 1,
maxItems: 3,
),
},
);
final title = schema.decode(rawJson, (object) {
return object['title']! as String;
});
Libraries
- seisei_schema
- Structured output schemas and validation helpers for Seisei.