Adding Keywords to AdGroup via AdWords API is failing with OperationAccessDenied.ACTION_NOT_PERMITTED

27 views
Skip to first unread message

Dean Povey

unread,
Jan 13, 2022, 12:35:15 AM1/13/22
to Google Ads API and AdWords API Forum
Since December 13, 2021 we have started getting this error for a client. We are attempting to add BiddableAdCriterion for Keywords via the AdWords API.  The exception returned is below. Any ideas on what could have caused this problem? The manager account seems to have access and we are able to make changes via the Google Ads web app.

ApiException: [OperationAccessDenied.ACTION_NOT_PERMITTED @ class com.google.ads.api.serviceimpls.job.batch.MutateAction] (OperationAccessDenied{apiErrorType=OperationAccessDenied, errorString=OperationAccessDenied.ACTION_NOT_PERMITTED, fieldPath=, reason=ACTION_NOT_PERMITTED, trigger=}) com.google.api.ads.adwords.axis.v201809.cm.ApiException: at jdk.internal.reflect.GeneratedConstructorAccessor757.newInstance(Unknown Source) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at java.base/java.lang.Class.newInstance(Class.java:584) at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104) at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90) at com.google.api.ads.adwords.axis.v201809.cm.ApiException.getDeserializer(ApiException.java:165) at jdk.internal.reflect.GeneratedMethodAccessor1818.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154) at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84) at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464) at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547) at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at com.google.api.ads.adwords.axis.v201809.cm.BatchJobServiceSoapBindingStub.mutate(BatchJobServiceSoapBindingStub.java:739) at jdk.internal.reflect.GeneratedMethodAccessor7070.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.google.api.ads.common.lib.soap.SoapClientHandler.invoke(SoapClientHandler.java:100) at com.google.api.ads.common.lib.soap.axis.AxisHandler.invokeSoapCall(AxisHandler.java:234) at com.google.api.ads.common.lib.soap.SoapServiceClient.callSoapClient(SoapServiceClient.java:63) at com.google.api.ads.common.lib.soap.SoapServiceClient.invoke(SoapServiceClient.java:93)

Google Ads API Forum Advisor

unread,
Jan 13, 2022, 4:31:11 AM1/13/22
to dean....@ppcsamurai.com, adwor...@googlegroups.com

Hello Dean,

Thank you for reaching out to us.

The OperationAccessDenied.ACTION_NOT_PERMITTED error signifies that you don't have an authorization to invoke the mutate method. So our team can better check on this, can you share to us the complete SOAP logs (request and response with requestId)? Since you're using the AdWords API, you can enable logging by referring to the client libraries' respective Github documentation.

Once the logs are already available, you may send those details via the Reply privately to author option. If this option is not available, you may send the details directly to our googleadsa...@google.com alias instead.

As an aside, please note that the AdWords API is deprecated and will be sunset on April 27, 2022. We strongly recommend that you migrate to the Google Ads API as soon as possible.

Regards,

Google Logo
Mark Kevin Albios
Google Ads API Team
 


ref:_00D1U1174p._5004Q2UjWOK:ref
Reply all
Reply to author
Forward
0 new messages