How should I model an API result so every error case is exhaustively handled? | SovranCode