Hi,
If you have partialFailure=true, then each operation without errors will be applied, but operations with errors will be returned. With partialFailure=false (or not specified), all operations in a request will fail if any operation in the request has errors.
The basic validation checks on operations occur before any policy violation checks, so if you have fields that hit basic validation issues, you'll only get back those errors in the response. If all of an ad's fields pass the basic validation checks, then I would expect you to get back all of the policy violation errors for each ad in the error response. One reason for this is that performing more complex validation checks when there are basic validation issues could produce confusing or meaningless errors. For example, if a final URL has an invalid protocol, it wouldn't be very helpful if the AdWords API also returned an error to indicate that the final URL was unreachable.
In the particular case you mentioned, the missing protocol in the final URL falls into the basic validation category, so you'd have to correct that before you'll get back policy violation errors. If you frequently encounter specific basic validation errors, then you may want to add validation within your application to avoid submitting those operations.
As an alternative, you could submit your request with
validateOnly=true, which will perform most of the validation steps for your request, but won't actually apply the changes. This would allow you to identify problematic operations, fix them, and then send the corrected operations in a second request with
validateOnly=false.
Thanks,
Josh, AdWords API Team