Yeah, my main problem with pushing more validation to the client side is that API's change. In theory most of the APIs are versioned and things like this shouldn't happen, but in real-life they do happen quite a lot.

Pushing validation to the client side means we can detect a potential problem and throw sooner which is great, but it also means we need to update a driver when the API changes which is not all that great because we currently support many different providers.

A standard way of defining this validation rules would be an interesting thing to explore. If no no other reason it could be useful from the parsing / documentation perspective.