This is aggravated by the fact that the error message is not easily parseable. If you update several contacts in batch and one of them contains an “obviously wrong” name, the error response will tell you which field was the offending one, but not of which contact. As far as we’ve seen, the only way to find exactly which name has a problem is to parse the error message, which used to say “\“foo.bar\” contains a URL”. Now the message changed to “foo.bar contains a URL” (note no quotes anymore) and that broke our workaround.
So, if the API is going to reject input following unpublished rules, it’d be nice if at least the rejection message follows a standard format so we can do something about that.