Does it make sense to allow minutes when hours isn't specified? Or
For time, 00 seems a reasonable default for all values; clearly document the defaults. Also, having a default makes the code simpler than <level n> plus <level n-1>. (Not to mention explaining it.) ;-)
SELECT to_timestamp( minutes := 19 ) -- error (year not specified)
SELECT to_timestamp( year := 2000, minutes := 19 ) -- 2000-01-01 00:19:00.0000-07
Dave