Exercise 1: Why ItemCreate Has No id, status, or added_at — Possible Solution ==================================================================== WHY THESE FIELDS ARE DELIBERATELY EXCLUDED ------------------------------ id is assigned by the database itself when a row is inserted - a client has no legitimate value to provide for it. status should always start as "active" for a newly created item, not something the client gets to decide directly. added_at is stamped automatically by the database via server_default=func.now(), specifically so it can never be set to a false value supplied by the client. None of these are values a well-behaved client request should ever need to send. WHAT HAPPENS TO A REQUEST INCLUDING status ANYWAY ------------------------------ Since ItemCreate simply has no status field declared at all, Pydantic's default behavior treats an unexpected field in the request body as invalid input - the request is rejected with a 422 response before the route handler's own code ever runs, rather than the extra field being silently accepted or silently ignored. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains the reasoning behind excluding each of the three fields (server-assigned id, a status that should always start at a fixed default, and a database-stamped timestamp), and correctly describes that an unexpected field causes outright rejection rather than being silently accepted or ignored.