Design the contract first
A schema is an API contract between the model and your application. Keep it small, explicit, and close to what the product actually needs. Avoid huge nested objects unless the downstream system truly needs them.
- Use enums for fixed choices instead of free text.
- Mark nullable fields intentionally and document refusal paths.
- Add examples only when they reduce ambiguity, not as a replacement for schema validation.