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] <javascript:> 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":{" > resourceName":"customers/1342647521/extensionFeedItems/ > 117","sitelinkFeedItem":{"linkText":"Link text 2","line1":"updated > 2","line2":"desc_line2-2","finalUrls":["http://www.effilab.com/link/path/2 > "]}},"updateMask":"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":{" > fieldPathElements":[{"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. For more options, visit https://groups.google.com/d/optout.
