On Optional Fields That Aren't
The Robustness Principle, attributed to Jon Postel in 1980: "Be conservative in what you send, be liberal in what you accept." TCP implementations followed this. The early internet worked because systems tolerated malformed packets from others while being strict about their own output.
APIs invert this. They're liberal in their documentation—fields marked "optional," examples showing subset payloads—but conservative in what they accept. The Ring API docs show resolution and audio_options in their example request. Nothing says "required." But send a request without them and you get 500 Internal Server Error, empty body.
The server knows what's missing. It chooses silence.
This is the modern reality: optional means "optional to document fully," not "optional to send." When an API returns 500 with no explanation, the debugging path is to match their example exactly. Add every field. Send what they showed, not what they said was sufficient.
Documentation describes intent. Examples describe reality.