I am responsible for converting my company's v13 interaction to the
new v200909 API.
All seemed to be going well as I started but I seem to have hit a
wall.
For the moment, I am only attempting to access the sandbox API and
have not attempted to connect to the production WSDLs.

I should note that this code is in Perl, and we are not using the
client library.

The constructed SOAP request is:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:namesp1="https://adwords.google.com/api/adwords/cm/v200909";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>

<soap:Header>
    <namesp4:RequestHeader soapenc:arrayType="xsd:string[5]"
xsi:type="soapenc:Array" xmlns:namesp4="https://adwords.google.com/api/
adwords/cm/v200909">
        <namesp5:applicationToken xsi:type="xsd:string"
xmlns:namesp5="https://adwords.google.com/api/adwords/cm/v200909";>not-
used-in-sandbox</namesp5:applicationToken>
        <namesp6:authToken xmlns:namesp6="https://adwords.google.com/
api/adwords/cm/v200909" xsi:type="xsd:string">auth-token</
namesp6:authToken>
        <namesp7:clientEmail xsi:type="xsd:string"
xmlns:namesp7="https://adwords.google.com/api/adwords/cm/
v200909">valid-email/namesp7:clientEmail>
        <namesp8:developerToken xmlns:namesp8="https://
adwords.google.com/api/adwords/cm/v200909"
xsi:type="xsd:string">developer-token</namesp8:developerToken>
        <namesp9:useragent xmlns:namesp9="https://adwords.google.com/
api/adwords/cm/v200909" xsi:type="xsd:string">Our Company</
namesp9:useragent>
    </namesp4:RequestHeader>
</soap:Header>

<soap:Body>
    <namesp1:mutate xmlns:namesp1="https://adwords.google.com/api/
adwords/cm/v200909">
        <operations xmlns:impl="https://adwords.google.com/api/adwords/
cm/v200909" soapenc:arrayType="xsd:anyType[2]"
xsi:type="impl:AdGroupCriterionOperation">
            <operator xmlns:impl="https://adwords.google.com/api/
adwords/cm/v200909" xsi:type="impl:Operator">SET</operator>
            <operand xmlns:impl="https://adwords.google.com/api/
adwords/cm/v200909"
soapenc:arrayType="impl:BiddableAdGroupCriterion[1]"
xsi:type="impl:AdGroupCriterion">
                <BiddableAdGroupCriterion xmlns:impl="https://
adwords.google.com/api/adwords/cm/v200909"
soapenc:arrayType="xsd:anyType[3]"
xsi:type="impl:BiddableAdGroupCriterion">
                    <adGroupId xsi:type="xsd:long">3000128164</
adGroupId>
                    <criterion xmlns:impl="https://adwords.google.com/
api/adwords/cm/v200909" soapenc:arrayType="xsd:long[1]"
xsi:type="impl:Criterion">
                        <id xsi:type="xsd:long">11255383</id>
                    </criterion>
                    <bids xmlns:impl="https://adwords.google.com/api/
adwords/cm/v200909" soapenc:arrayType="xsd:anyType[2]"
xsi:type="impl:ManualCPCAdGroupCriterionBids">
                        <maxCpc xmlns:impl="https://adwords.google.com/
api/adwords/cm/v200909" soapenc:arrayType="impl:Money[1]"
xsi:type="impl:Bid">
                            <amount xmlns:impl="https://
adwords.google.com/api/adwords/cm/v200909"
soapenc:arrayType="xsd:long[1]" xsi:type="impl:Money">
                                <microAmount
xsi:type="xsd:long">4500000</microAmount>
                            </amount>
                        </maxCpc>
                        <bidSource xmlns:impl="https://
adwords.google.com/api/adwords/cm/v200909"
xsi:type="impl:BidSource">CRITERION</bidSource>
                    </bids>
                </BiddableAdGroupCriterion>
            </operand>
        </operations>
    </namesp1:mutate>
</soap:Body>
</soap:Envelope>

And it receives the rather cryptic response:
<soap:Body>
    <soap:Fault>
        <faultcode>soap:Server</faultcode>
        <faultstring>[NotEmptyError.EMPTY_LIST @ operations]</
faultstring>
            <detail>
                <ApiExceptionFault xmlns="https://adwords.google.com/
api/adwords/cm/v200909">
                    <message>[NotEmptyError.EMPTY_LIST @ operations]</
message>
                <ApplicationException.Type>ApiException</
ApplicationException.Type>
                <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:type="NotEmptyError">
                    <fieldPath>operations</fieldPath>
                    <trigger></trigger>
                    <ApiError.Type>NotEmptyError</ApiError.Type>
                    <reason>EMPTY_LIST</reason>
                </errors>
            </ApiExceptionFault>
        </detail>
    </soap:Fault>
</soap:Body>

I am not one to hit the forums the minute it doesn't work but I am now
on my third day trying to figure out where I am going wrong.  I tried
running the provided samples (even though they were version 200906)
for an addition of a keyword and received the exact same response
I can construct the SOAP however is necessary (that's the easy part
for me) so I just need help changing the above call to include the
proper pieces; if someone gave me a properly formatted, and thus
potentially working, XML for this call I can handle all the rest
myself.

The assistance of those more familiar with this than I would be of
great help.

-- 
You received this message because you are subscribed to the Google Groups 
"AdWords API Forum" group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.

Reply via email to