Hi Pete, I read through the whole thread, the blog and the Java GitHub bug. Unfortunately in this case, the "fix" you provided in the GitHub bug is the right fix. The explanation is a bit long though.
1. In v8, for CALL_ADS, you should set final_urls. You should also clear display_url in the process. I believe the thought process here was that whenever anyone sets a CALL_AD, Google will also force them to clear the display_url, thus upgrading from CallOnlyAd to CallAd. 2. Since display_url has to be cleared, the right way to do this is to: a) Do not set display_url field. b) Add a display_url to the FieldMask. This is why the following code works: final FieldMask.Builder fieldMaskBuilder = FieldMasks.allSetFieldsOf( ad ).toBuilder(); if( ad.hasCallAd() ) { fieldMaskBuilder.addPaths( "display_url" ); } 3) If you set display_url = "", then that is interpreted by the server as "trying to set display_url to an empty string", which is why you get the VALUE_MUST_BE_UNSET error. Normally, this should be the same thing as "clearing display_url", but the servers don't interpret it this way, because we published display_url as an optional field (https://github.com/googleapis/googleapis/blob/master/google/ads/googleads/v8/resources/ad.proto#L86), which is a way of saying that "" and unset values have different meanings. I can file a request to interpret both errors the same way, but your "fix" is just as valid in this case. 4) Setting the display_url as null is shouldn't throw an NPE, that should be a bug with the Java client library team. However, that won't fix your issue due to point (3). Apologies for the long thread. I've copied Nick so you don't have to file yet another bug on the Java client library repo. Hopefully in a few months, the migration will be complete, v7 will be sunset, and this workaround is no longer needed. Cheers Anash ref:_00D1U1174p._5004Q2IxmDo:ref -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/-KZSi000000000000000000000000000000000000000000000QVY60U00LtwfesbeS322QAz8MIYM3A%40sfdc.net.