Undocumented exception trying to change budget

19 views
Skip to first unread message

di...@adscale.com

unread,
Apr 23, 2018, 6:07:20 AM4/23/18
to AdWords API Forum
Hi,

I can't update a couple of budgets of one of our customers (I have only a refresh token), it fails with an undocumented error BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM, at least I couldn't find it.

What does it mean?

Thanks

[http-bio-5050-exec-7] WARN com.google.api.ads.adwords.lib.client.AdWordsServiceClient.requestInfoLogger - Request made: Service: BudgetService Method: mutate clientCustomerId: XXXXXX URL: https://adwords.google.com/api/adwords/cm/v201710/BudgetService Request ID: 00056a6a1f8274100a379a113f01f938 ResponseTime(ms): 191 OperationsCount: 1 IsFault: true FaultMessage: ApiException{applicationExceptionType=ApiException, errors=[BudgetError{apiErrorType=BudgetError, errorString=BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM, fieldPath=operations[0].operand.amount, fieldPathElements=[FieldPathElement{field=operations, index=0}, FieldPathElement{field=operand}, FieldPathElement{field=amount}], reason=BUDGET_ERROR, trigger=}]}
[http-bio-5050-exec-7] INFO com.google.api.ads.adwords.lib.client.AdWordsServiceClient.soapXmlLogger - SOAP request:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <ns1:RequestHeader xmlns:ns1="https://adwords.google.com/api/adwords/cm/v201710" soapenv:mustUnderstand="0">
            <ns1:clientCustomerId>XXXXXXXX</ns1:clientCustomerId>
            <ns1:developerToken>REDACTED</ns1:developerToken>
            <ns1:userAgent>XXXXX (AwApi-Java, AdWords-Axis/3.10.0, Common-Java/3.10.0, Axis/1.4, Java/1.8.0_152, maven)</ns1:userAgent>
            <ns1:validateOnly>false</ns1:validateOnly>
            <ns1:partialFailure>false</ns1:partialFailure>
        </ns1:RequestHeader>
    </soapenv:Header>
    <soapenv:Body>
            <operations>
                <operator>SET</operator>
                <operand>
                    <budgetId>XXXXXXX</budgetId>
                    <amount>
                        <microAmount>1000000</microAmount>
                    </amount>
                </operand>
            </operations>
        </mutate>
    </soapenv:Body>
</soapenv:Envelope>

[http-bio-5050-exec-7] INFO com.google.api.ads.adwords.lib.client.AdWordsServiceClient.soapXmlLogger - SOAP response:
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201710">
            <requestId>00056a6a1f8274100a379a113f01f938</requestId>
            <serviceName>BudgetService</serviceName>
            <methodName>mutate</methodName>
            <operations>1</operations>
            <responseTime>191</responseTime>
        </ResponseHeader>
    </soap:Header>
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Client</faultcode>
            <faultstring>[BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM @ operations[0].operand.amount]</faultstring>
            <detail>
                <ApiExceptionFault xmlns="https://adwords.google.com/api/adwords/cm/v201710">
                    <message>[BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM @ operations[0].operand.amount]</message>
                    <ApplicationException.Type>ApiException</ApplicationException.Type>
                    <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="BudgetError">
                        <fieldPath>operations[0].operand.amount</fieldPath>
                        <fieldPathElements>
                            <field>operations</field>
                            <index>0</index>
                        </fieldPathElements>
                        <fieldPathElements>
                            <field>operand</field>
                        </fieldPathElements>
                        <fieldPathElements>
                            <field>amount</field>
                        </fieldPathElements>
                        <trigger/>
                        <errorString>BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM</errorString>
                        <ApiError.Type>BudgetError</ApiError.Type>
                        <reason>BUDGET_ERROR</reason>
                    </errors>
                </ApiExceptionFault>
            </detail>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

AxisFault
 faultSubcode: 
 faultString: [BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM @ operations[0].operand.amount]
 faultActor: 
 faultNode: 
 faultDetail: 
{https://adwords.google.com/api/adwords/cm/v201710}ApiExceptionFault:<message>[BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM @ operations[0].operand.amount]</message><ApplicationException.Type>ApiException</ApplicationException.Type><errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="BudgetError"><fieldPath>operations[0].operand.amount</fieldPath><fieldPathElements><field>operations</field><index>0</index></fieldPathElements><fieldPathElements><field>operand</field></fieldPathElements><fieldPathElements><field>amount</field></fieldPathElements><trigger/><errorString>BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM</errorString><ApiError.Type>BudgetError</ApiError.Type><reason>BUDGET_ERROR</reason></errors>

ApiException{applicationExceptionType=ApiException, errors=[BudgetError{apiErrorType=BudgetError, errorString=BudgetError.BUDGET_AMOUNT_MUST_BE_UNSET_FOR_BUDGET_PERIOD_CUSTOM, fieldPath=operations[0].operand.amount, fieldPathElements=[FieldPathElement{field=operations, index=0}, FieldPathElement{field=operand}, FieldPathElement{field=amount}], reason=BUDGET_ERROR, trigger=}]}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
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.v201710.cm.ApiException.getDeserializer(ApiException.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.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.v201710.cm.BudgetServiceSoapBindingStub.mutate(BudgetServiceSoapBindingStub.java:851)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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)
at com.sun.proxy.$Proxy36.mutate(Unknown Source)

Milind Sankeshware (AdWords API Team)

unread,
Apr 23, 2018, 1:55:31 PM4/23/18
to AdWords API Forum
Hi Dmitry,

Could you please share the client customer id along with budget id so that I can troubleshoot the issue? You could choose 'Reply privately to author' option while responding. 

Thanks,
Milind, AdWords API Team.
Reply all
Reply to author
Forward
0 new messages