What a schema generated from samples can and cannot know
A generator sees values, not intent. It can tell that total held a number, that customer was an object with an id and an email, and that every item in the items array had a sku. It cannot tell that total must be positive, that status only ever takes four values, or that an order must contain at least one item. Those rules live in the API specification and the code, not in any one response.
Some types are guesses too. JSON makes no distinction between 1 and 1.0, so a price that happened to be a whole number in every sample is inferred as integer, and the first response with 19.95 in it then fails. Since draft-06 an integer in JSON Schema means any number with a zero fractional part, so the reverse is safe: a field typed number accepts 20. If a field is a decimal by nature, make sure at least one sample shows a fraction, or change integer to number by hand.
Formats are claimed conservatively. A string is only labelled date-time, date, email, uri, uuid or an IP address when every value seen at that place matches the format exactly, and a time must carry its offset, as RFC 3339 requires. A field that held "09:14:02" or "2026-10-26 09:14" stays a plain string.