THE CONTRACT · V1
A place for
every detail.
Exact fields, units, and limits. Use the JSON Schema for automated validation and this reference for the meaning behind each value.
Document
| Field | Type | Details |
|---|---|---|
format | string | Required. Exactly "saffron". |
version | integer | Required. Exactly 1. |
recipes | array | Required. Between 1 and 100 recipe objects. |
Recipe
| Field | Type | Details |
|---|---|---|
title | string | Recipe name. Required, nonempty; maximum 300 characters. |
description | string | Short factual description; maximum 10,000 characters. |
servings | integer | Positive whole-number base yield. Defaults to 1; no product-defined maximum. |
yieldUnit | string | What the yield counts, such as cookies or slices; up to 60 characters. |
prepMinutes | integer | Preparation time in whole minutes, from 0 to 10,080. |
cookMinutes | integer | Cooking time in whole minutes, from 0 to 10,080. |
notes | string | Recipe notes, substitutions, and storage guidance from the source; up to 20,000 characters. |
sourceURL | string | Optional HTTPS source URL. Preserve attribution when available. |
imageURL | string | Optional HTTPS image link. Images are linked, not embedded. |
ingredients | array | Required array of 1–200 ingredient objects. |
steps | array | Required array of 1–150 ordered step objects. |
Ingredient
| Field | Type | Details |
|---|---|---|
name | string | Required. Nonempty; up to 300 characters. |
quantity | string | Required. A nonnegative decimal, such as "1.25". No fraction, exponent, comma, or unit suffix. |
unit | string | Required. One exact token from the list below. |
preparation | string | Optional. Up to 2,000 characters, such as Softened. |
Canonical units
noneteaspoontablespooncupmilliliterlitergramkilogramfluidOunceouncepoundpiececlovebulbcanslicebunchpackagepinchtoTasteFor unmeasured seasoning, use quantity "0" and unit toTaste. Keep mass and volume separate; do not guess ingredient densities.
Step
| Field | Type | Details |
|---|---|---|
text | string | Required. Nonempty; up to 10,000 characters. |
timerSeconds | integer | Optional. Between 0 and 604,800 seconds. |
Count what the recipe makes.
A batch of 24 cookies uses servings: 24 and yieldUnit: "cookies". To make 30, ingredient amounts multiply by 1.25. Temperatures and timer durations stay grounded in the original directions.