Schema Types¶
Define your expected output structure using strutex's schema types.
Basic Types¶
String¶
from strutex import String
name = String(description="Customer name")
optional_name = String(description="Middle name", nullable=True)
Number¶
For floating-point values:
Integer¶
For whole numbers:
Boolean¶
Complex Types¶
Array¶
from strutex import Array, String, Object
# Array of strings
tags = Array(items=String(), description="Item tags")
# Array of objects
items = Array(
items=Object(
properties={
"name": String(),
"price": Number()
}
)
)
Object¶
from strutex import Object, String
address = Object(
description="Shipping address",
properties={
"street": String(),
"city": String(),
"zip": String()
}
)
Required vs Optional¶
By default, all properties are required. To make fields optional:
Complete Example¶
from strutex import Object, String, Number, Integer, Array, Boolean
invoice_schema = Object(
description="Complete invoice",
properties={
"invoice_number": String(description="Unique ID"),
"date": String(description="YYYY-MM-DD"),
"vendor": Object(
properties={
"name": String(),
"address": String(nullable=True)
}
),
"items": Array(
items=Object(
properties={
"description": String(),
"quantity": Integer(),
"price": Number()
}
)
),
"total": Number(),
"paid": Boolean()
}
)