pub fn validate_range(range: &Range) -> Result<(), ApiError>
Rejects a range the server will not serve, with the reason.
Separate from the handler so the rules can be read - and tested - without a database behind them.