It seems I have not made as much progress as I had hoped.
I am now receiving a CONCRETE_TYPE_REQUIRED error upon submitting a
mutate.
The last run of my code generated the following request:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope>
<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">token</
namesp6:authToken><namesp7:clientEmail xsi:type="xsd:string"
xmlns:namesp7="https://adwords.google.com/api/adwords/cm/
v200909">szainud...@did-it.com</namesp7:clientEmail>
        <namesp8:developerToken xmlns:namesp8="https://
adwords.google.com/api/adwords/cm/v200909"
xsi:type="xsd:string">dev_token</namesp8:developerToken>
        <namesp9:useragent xmlns:namesp9="https://adwords.google.com/
api/adwords/cm/v200909" xsi:type="xsd:string">Company</
namesp9:useragent>
    </namesp4:RequestHeader>
</soap:Header>
<soap:Body>
    <namesp1:mutate xmlns:namesp1="https://adwords.google.com/api/
adwords/cm/v200909">
        <namesp11:operations soapenc:arrayType="xsd:anyType[2]"
xmlns:namesp11="https://adwords.google.com/api/adwords/cm/v200909";
xsi:type="namesp19:AdGroupCriterionOperation">
            <namesp12:operator xmlns:namesp12="https://
adwords.google.com/api/adwords/cm/v200909" xsi:type="xsd:string">SET</
namesp12:operator>
            <namesp13:operand soapenc:arrayType="xsd:anyType[3]"
xsi:type="namesp19:BiddableAdGroupCriterion" xmlns:namesp13="https://
adwords.google.com/api/adwords/cm/v200909">
                <namesp14:adGroupId xmlns:namesp14="https://
adwords.google.com/api/adwords/cm/v200909"
xsi:type="xsd:long">3000128164</namesp14:adGroupId>
                <namesp15:criterion soapenc:arrayType="xsd:anyType[3]"
xsi:type="namesp19:Keyword" xmlns:namesp15="https://adwords.google.com/
api/adwords/cm/v200909">
                    <namesp16:id xmlns:namesp16="https://
adwords.google.com/api/adwords/cm/v200909"
xsi:type="xsd:long">11255383</namesp16:id>
                    <namesp17:text xsi:type="xsd:string"
xmlns:namesp17="https://adwords.google.com/api/adwords/cm/
v200909">socks</namesp17:text>
                    <namesp18:matchType xmlns:namesp18="https://
adwords.google.com/api/adwords/cm/v200909"
xsi:type="xsd:string">EXACT</namesp18:matchType>
                </namesp15:criterion>
                <namesp20:bids soapenc:arrayType="namesp19:Bid[1]"
xsi:type="namesp19:ManualCPCAdGroupCriterionBids"
xmlns:namesp20="https://adwords.google.com/api/adwords/cm/v200909";>
                    <namesp21:maxCpc
soapenc:arrayType="namesp19:Money[1]" xsi:type="namesp19:Bid"
xmlns:namesp21="https://adwords.google.com/api/adwords/cm/v200909";>
                        <namesp22:amount
soapenc:arrayType="xsd:long[1]" xsi:type="namesp19:Money"
xmlns:namesp22="https://adwords.google.com/api/adwords/cm/v200909";>
                            <namesp23:microAmount xsi:type="xsd:long"
xmlns:namesp23="https://adwords.google.com/api/adwords/cm/
v200909">4500000</namesp23:microAmount>
                        </namesp22:amount>
                    </namesp21:maxCpc>
                </namesp20:bids>
            </namesp13:operand>
        </namesp11:operations>
    </namesp1:mutate>
</soap:Body>
</soap:Envelope>

The ultimate failure response is:
<errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:type="AdGroupCriterionError">
    <fieldPath>operations[0].operand</fieldPath>
    <trigger></trigger>
    <ApiError.Type>AdGroupCriterionError</ApiError.Type>
    <reason>CONCRETE_TYPE_REQUIRED</reason>
</errors>


I assume that the error surrounds the criterion type (in this case
Keyword), but whether I put in the Keyword, Placement, or abstract
type (desperation) I get the same error.
Thinking it might have been the type of the operand itself
(BiddableAdGroupCriterion) I tried various permutations and still
received the same error.

Any help in amending my request would be a great boon to my efforts.
If any additional information is required for clarification I would be
glad to provide it.


On Feb 11, 12:05 pm, TJG <tgala...@didit.com> wrote:
> Thank you very much for that information.
> It has certainly set me on the right path and I should be able to make
> much more progress now.
>
> On Feb 10, 11:30 am, AdWords API Advisor
>
>
>
> <adwordsapiadvi...@google.com> wrote:
> > Hi,
>
> > I can see two problems with your request.  The first is that the
> > <operations> element and all sub elements needs to be in the AdWords
> > cm namespace.  The xsi:types are all in this namespace, but the body
> > elements themselves are not in any namespace, which is causing the API
> > server to not find the elements and return an error about an empty
> > list.
>
> > Looking forward, there shouldn't be a BiddableAdGroupCriterion
> > element.  Instead the operand should have an xsi:type of
> > BiddableAdGroupCriterion.
>
> > Best,
> > - Eric Koleda, AdWords API Team
>
> > On Feb 9, 12:59 pm, TJG <tgala...@didit.com> wrote:
>
> > > 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:mutatexmlns: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