Oh, interesting... have you tried it with partialFailure=true for these requests?
On Jan 16, 6:45 pm, Peter <[email protected]> wrote: > Hey mm, > > Yeah this was working before. I did afew follow up tests and it looks > like validateOnly doesn't work period. I tested both add, delete and > update keyword operations and after the validateOnly call had been > completed the changes were visible from adwords website. I've included > the SOAP log below just for reference purposes for the following 3 > calls. > > Remove Operation (first with validateOnly then without validate, it > appears executing a remove with validateOnly actually removes the > keyword) > Update Operation Set Paused (first with validateOnly then without > validate, it appears executing an update with validateOnly actually > updates the keyword) > Add Operation (first with validateOnly then without validate, it > appears executing an add with validateOnly actually adds the keyword) > > I wonder if this might be related to Google making changes to > partialFailure to support something in keywords which has caused it to > ignore the validateOnly flag when it shouldn't be. > > validateOnly (optional) > If set to true, the request is validated but not performed. The > cost of the request is reduced to 0.05 API units per item, rounded up > to the nearest integer. You can use this header to inexpensively > validate user-provided data. > partialFailure (optional; v201008+: AdGroupCriterionService; v201109+: > AdGroupAdService) > If set to true, the service will perform error-free operations and > return the failing operations' errors. This header is ignored for non- > mutate operations. > > Peter > > Remove Operation (first with validateOnly then without validate, it > appears executing a remove with validateOnly actually removes the > keyword) > ========== > [2012-01-17 09:17:15,908::WARNING::AwApi-Python-15.1.4] StartTime: > 2012-01-17 09:17:15 > *** Outgoing HTTP headers > ********************************************** > POST /api/adwords/cm/v201101/AdGroupCriterionService HTTP/1.0 > Host:adwords.google.com > User-agent:SOAPpy 0.12.0 (pywebsvcs.sf.net),gzip > XML-parser: xml.etree.cElementTree v1.0.6 > Content-type:text/xml; charset="UTF-8" > Content-length:1762 > SOAPAction:"mutate" > ************************************************************************ > *** Outgoing SOAP > ****************************************************** > <?xml version="1.0" encoding="UTF-8"?> > <SOAP-ENV:Envelope > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsi3="http://www.w3.org/2001/XMLSchema-instance" > > > <SOAP-ENV:Header xmlns="https://adwords.google.com/api/adwords/cm/ > v201101" xmlns:cm="https://adwords.google.com/api/adwords/cm/v201101"> > <RequestHeader> > <cm:developerToken>xxxxxxx</cm:developerToken> > <cm:validateOnly>True</cm:validateOnly> > <cm:userAgent>AwApi-Python-15.1.4|Test Client</cm:userAgent> > <cm:authToken>xxxxxxxx</cm:authToken> > </RequestHeader> > </SOAP-ENV:Header> > <SOAP-ENV:Body> > <mutate xmlns="https://adwords.google.com/api/adwords/cm/v201101" > xmlns:cm="https://adwords.google.com/api/adwords/cm/v201101"> > <operations xsi3:type="cm:AdGroupCriterionOperation"> > <cm:operator>REMOVE</cm:operator> > <cm:operand xsi3:type="cm:BiddableAdGroupCriterion"> > <cm:adGroupId>2737276335</cm:adGroupId> > <cm:criterion xsi3:type="cm:Keyword"> > <cm:id>8713564609</cm:id> > <cm:text>drying fresh garlic</cm:text> > <cm:matchType>BROAD</cm:matchType> > </cm:criterion> > <cm:userStatus>ACTIVE</cm:userStatus> > <cm:bids xsi3:type="cm:ManualCPCAdGroupCriterionBids"> > <cm:maxCpc xsi3:type="cm:Bid"> > <cm:amount xsi3:type="cm:Money"> > <cm:microAmount>0</cm:microAmount> > </cm:amount> > </cm:maxCpc> > </cm:bids> > </cm:operand> > </operations> > </mutate> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > ************************************************************************ > *** Incoming HTTP headers > ********************************************** > HTTP/1.? 200 OK > Content-Type: text/xml; charset=UTF-8 > Date: Tue, 17 Jan 2012 00:17:25 GMT > Expires: Tue, 17 Jan 2012 00:17:25 GMT > Cache-Control: private, max-age=0 > X-Content-Type-Options: nosniff > X-Frame-Options: SAMEORIGIN > X-XSS-Protection: 1; mode=block > Server: GSE > ************************************************************************ > *** Incoming SOAP > ****************************************************** > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> > <soap:Header> > <ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/ > v201101"> > <requestId>0004b6ae4170e4c80a42534200003e73</requestId> > <operations>1</operations> > <responseTime>344</responseTime> > <units>1</units> > </ResponseHeader> > </soap:Header> > <soap:Body> > <mutateResponse xmlns="https://adwords.google.com/api/adwords/cm/ > v201101"> > <rval> > <ListReturnValue.Type>AdGroupCriterionReturnValue</ > ListReturnValue.Type> > <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:type="BiddableAdGroupCriterion"> > <adGroupId>2737276335</adGroupId> > <criterion xsi:type="Keyword"> > <id>8713564609</id> > <Criterion.Type>Keyword</Criterion.Type> > <text>drying fresh garlic</text> > <matchType>BROAD</matchType> > </criterion> > <AdGroupCriterion.Type>BiddableAdGroupCriterion</ > AdGroupCriterion.Type> > </value> > </rval> > </mutateResponse> > </soap:Body> > </soap:Envelope> > ************************************************************************ > EndTime: 2012-01-17 09:17:15 > [2012-01-17 09:17:31,023::WARNING::AwApi-Python-15.1.4] StartTime: > 2012-01-17 09:17:30 > *** Outgoing HTTP headers > ********************************************** > POST /api/adwords/cm/v201101/AdGroupCriterionService HTTP/1.0 > Host:adwords.google.com > User-agent:SOAPpy 0.12.0 (pywebsvcs.sf.net),gzip > XML-parser: xml.etree.cElementTree v1.0.6 > Content-type:text/xml; charset="UTF-8" > Content-length:1722 > SOAPAction:"mutate" > ************************************************************************ > *** Outgoing SOAP > ****************************************************** > <?xml version="1.0" encoding="UTF-8"?> > <SOAP-ENV:Envelope > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsi3="http://www.w3.org/2001/XMLSchema-instance" > > > <SOAP-ENV:Header xmlns="https://adwords.google.com/api/adwords/cm/ > v201101" xmlns:cm="https://adwords.google.com/api/adwords/cm/v201101"> > <RequestHeader> > <cm:developerToken>xxxxxxxxx</cm:developerToken> > <cm:userAgent>AwApi-Python-15.1.4|Test Client</cm:userAgent> > <cm:authToken>xxxxxxxxx</cm:authToken> > </RequestHeader> > </SOAP-ENV:Header> > <SOAP-ENV:Body> > <mutate xmlns="https://adwords.google.com/api/adwords/cm/v201101" > xmlns:cm="https://adwords.google.com/api/adwords/cm/v201101"> > <operations xsi3:type="cm:AdGroupCriterionOperation"> > <cm:operator>REMOVE</cm:operator> > <cm:operand xsi3:type="cm:BiddableAdGroupCriterion"> > <cm:adGroupId>2737276335</cm:adGroupId> > <cm:criterion xsi3:type="cm:Keyword"> > <cm:id>8713564609</cm:id> > <cm:text>drying fresh garlic</cm:text> > <cm:matchType>BROAD</cm:matchType> > </cm:criterion> > <cm:userStatus>ACTIVE</cm:userStatus> > <cm:bids xsi3:type="cm:ManualCPCAdGroupCriterionBids"> > <cm:maxCpc xsi3:type="cm:Bid"> > <cm:amount xsi3:type="cm:Money"> > <cm:microAmount>0</cm:microAmount> > </cm:amount> > </cm:maxCpc> > </cm:bids> > </cm:operand> > </operations> > </mutate> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > ************************************************************************ > *** Incoming HTTP headers > ********************************************** > HTTP/1.? 500 Internal Server Error > Content-Type: text/xml; charset=UTF-8 > Date: Tue, 17 Jan 2012 00:17:40 GMT > Expires: Tue, 17 Jan 2012 00:17:40 GMT > Cache-Control: private, max-age=0 > X-Content-Type-Options: nosniff > X-Frame-Options: SAMEORIGIN > X-XSS-Protection: 1; mode=block > Server: GSE > ************************************************************************ > *** Incoming SOAP > ****************************************************** > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> > <soap:Header> > <ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/ > v201101"> > <requestId>0004b6ae4258c4280a426e69000075a4</requestId> > <operations>1</operations> > <responseTime>268</responseTime> > <units>1</units> > </ResponseHeader> > </soap:Header> > <soap:Body> > <soap:Fault> > <faultcode>soap:Server</faultcode> > <faultstring>[EntityNotFound.INVALID_ID @ > operations[0].operand.criterion.id; trigger:'8713564609']</ > faultstring> > <detail> > <ApiExceptionFault xmlns="https://adwords.google.com/api/ > adwords/cm/v201101"> > <message>[EntityNotFound.INVALID_ID @ > operations[0].operand.criterion.id; trigger:'8713564609']</message> > <ApplicationException.Type>ApiException</ > ApplicationException.Type> > <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema- > instance" xsi:type="EntityNotFound"> > <fieldPath>operations[0].operand.criterion.id</fieldPath> > <trigger>8713564609</trigger> > <errorString>EntityNotFound.INVALID_ID</errorString> > <ApiError.Type>EntityNotFound</ApiError.Type> > <reason>INVALID_ID</reason> > </errors> > ... > > read more » -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords 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
