Hi Benjamin,

You mentioned that you expected *validate_only = true* to fail gracefully
if there's an exception. Were you thinking of *partial_failure* instead?
With validate only enabled, the API is expected to throw an exception if
any of the operations have an error. The behavior you described is more in
line with enabling partial failure, where the API applies successful
operations, but then reports errors for individual operations that failed
in the response. Please note, however, that ExtensionFeedItemService.mutate
<https://developers.google.com/google-ads/api/reference/rpc/google.ads.googleads.v1.services#extensionfeeditemservice>
does not currently support partial failure.

All that being said, the error ERROR_CODE_NOT_PUBLISHED message is
definitely something we need to look at. I've reported that to the feeds
team for follow-up and will let you know when I hear back from them.

Thanks,
Josh, Google Ads API Team

=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and discussion group:
    https://ads-developers.googleblog.com/search/label/google_ads_api
    https://developers.google.com/adwords/api/community/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

On 04/24/19 03:57:22 [email protected] wrote:

In the company I am working, we sync millions of entities, and sometimes
errors happen, so it may happen we send twice a request to remove something
for instance.

Using validate_only I would expect the request to fail gracefully: tell me
which operations are valid, which are invalid and why. That way I can
filter them out and decide what to do with errored cases.

In the current setup:
- it fails with an exception
- there is no indication of which operation was wrong


On Wednesday, April 24, 2019 at 8:37:50 AM UTC+2, googleadsapi-forumadvisor
wrote:

Hi Benjamin,

Thank you for reaching out. Could you further elaborate what you wish to
achieve with the validateOnly header in your requests? You can test using
production data in a read-only fashion on your production accounts if you
use the validateOnlyheader in your requests, and you have an approved
developer token.

Upon checking your logs, the errors that you encountered were expected. For
your first concern, you have to indicate a valid resource name in your
ExtensionFeedItem. It appears that the feed item id provided does not
exist. You can use the ExtensionFeedItemService.GetExtensionFeedItem
<https://developers.google.com/google-ads/api/reference/rpc/google.ads.googleads.v1.services#google.ads.googleads.v1.services.ExtensionFeedItemService>
to get the list of ExtensionFeedItems. As for your second concern, you
cannot operate on deleted items, hence the error you are encountering.
Kindly use an active sitelinkFeedItem instead.

Regards,
Dannison
Google Ads API Team


=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and discussion group:
    https://ads-developers.googleblog.com/search/label/google_ads_api
    https://developers.google.com/adwords/api/community/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

Was your question answered? Please rate your experience with us by taking a
short survey.
If not -- reply to this email and tell us what else we can do to help.

Take Survey
<https://support.google.com/google-ads/contact/survey_transactional?caseid=2-6897000026381&hl=en&ctx=1>

Also find us on our blog and discussion group:
http://googleadsdeveloper.blogspot.com/search/label/adwords_api
https://developers.google.com/adwords/api/community/
On 04/24/19 05:00:27 [email protected] wrote:

another example if I try to delete an already deleted feed item:

W, [2019-04-23T22:59:27.857363 #625]  WARN -- : CID: 1342647521, Host:
googleads.googleapis.com:443, Method: /google.ads.googleads.v1.services.
ExtensionFeedItemService/MutateExtensionFeedItems, IsFault: yes
I, [2019-04-23T22:59:27.859201 #625]  INFO -- : Outgoing request: Headers:
{"x-goog-api-client":"gl-ruby/2.5.1 gapic/1.1.1 gax/1.5.0
grpc/1.19.0","developer-token":"SANITIZED","login-customer-id":"SANITIZED"}
Payload: {"customerId":"SANITIZED","operations":[{"remove":"
customers/1342647521/extensionFeedItems/69260980063"},{"create":{"
sitelinkFeedItem":{"linkText":"Link text 3","line1":"desc_line1-3","
line2":"desc_line2-3","finalUrls":["http://www.effilab.com/link/path/3
"]}}}],"validateOnly":true}
I, [2019-04-23T22:59:27.860736 #625]  INFO -- : Incoming response (errors):
Error 1: {"errorCode":{"internalError":"ERROR_CODE_NOT_PUBLISHED"},"message":"The
appropriate error code isn't part of the API yet.","trigger":{"stringValue"
:""},"location":{"fieldPathElements":[{"fieldName":"operations","
index":},{"fieldName":"remove"}]},"details":{"unpublishedErrorCode":"
ExtensionFeedItemError.CANNOT_OPERATE_ON_DELETED_FEED_ITEM"}}


On Tuesday, April 23, 2019 at 10:57:01 PM UTC+2, [email protected]
wrote:

I am using google ads and I checked how the api is behaving with wrong
data: there can be sync issues and its super important to ensure it is safe
enough.

I was disappointed to see that even if I am using validate_only set to
true, the api is sending an exception whenever I send a wrong resource path.

I would have expected validation errors for the wrong operation.

Here are the logs:
W, [2019-04-23T22:48:48.724065 #608]  WARN -- : CID: 1342647521, Host:
googleads.googleapis.com:443, Method: /google.ads.googleads.v1.services.
ExtensionFeedItemService/MutateExtensionFeedItems, IsFault: yes
I, [2019-04-23T22:48:48.725862 #608]  INFO -- : Outgoing request: Headers:
{"x-goog-api-client":"gl-ruby/2.5.1 gapic/1.1.1 gax/1.5.0
grpc/1.19.0","developer-token":"SANITIZED","login-customer-id":"SANITIZED"}
Payload: {"customerId":"SANITIZED","operations":[{"update":{"resource
Name":"customers/1342647521/extensionFeedItems/117","sitelinkFeedItem":{"
linkText":"Link text 2","line1":"updated 2","line2":"desc_line2-2","fin
alUrls":["http://www.effilab.com/link/path/2"]}},"updateMas
k":"sitelinkFeedItem.linkText,sitelinkFeedItem.line1,sitelinkFeedItem.line2,
sitelinkFeedItem.finalUrls"},{"create":{"sitelinkFeedItem":{"linkText":"Link
text 4","line1":"desc_line1-4","line2":"desc_line2-4","finalUrls":["
http://www.effilab.com/link/path/4"]}}}],"validateOnly":true}
I, [2019-04-23T22:48:48.727453 #608]  INFO -- : Incoming response (errors):
Error 1: {"errorCode":{"mutateError":"RESOURCE_NOT_FOUND"},"message":"Resource
was not found.","trigger":{"stringValue":""},"location":{"fieldPathE
lements":[{"fieldName":"operations","index":},{"fieldName":"update"},{"
fieldName":"resource_name"}]}}

What do you think?

--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit https://groups.google.com/d/
msgid/adwords-api/b6ea6e9a-7508-4da2-be03-1db91862fa61%40googlegroups.com
<https://groups.google.com/d/msgid/adwords-api/b6ea6e9a-7508-4da2-be03-1db91862fa61%40googlegroups.com?utm_medium=email&utm_source=footer>
.
For more options, visit https://groups.google.com/d/optout.

--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit
https://groups.google.com/d/msgid/adwords-api/73ac40a0-1d3d-4e9f-b8a2-d313fe497a5f%40googlegroups.com
<https://groups.google.com/d/msgid/adwords-api/73ac40a0-1d3d-4e9f-b8a2-d313fe497a5f%40googlegroups.com?utm_medium=email&utm_source=footer>
.
For more options, visit https://groups.google.com/d/optout.

--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/1a0g8i80000000008rbq64000e1582x68mjce1p6so30c1g68r36e1h%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
  • wrong e... benjamin
    • Re... benjamin
      • ... googleadsapi-forumadvisor via AdWords API and Google Ads API Forum
        • ... benjamin
          • ... googleadsapi-forumadvisor via AdWords API and Google Ads API Forum
            • ... benjamin
              • ... googleadsapi-forumadvisor via AdWords API and Google Ads API Forum
                • ... benjamin
                • ... googleadsapi-forumadvisor via AdWords API and Google Ads API Forum

Reply via email to