Sanchit
Sanchit

Reputation: 438

Getting Unmarshalling Error while using Google Adwords API

I'm making use of OAuth2 as authentication mechanism to get the response about the "add budget campaign" using SOAP request. In the very beginning to send a soap request using cUrl I am facing an error given below:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
  <soap:Fault>
   <faultcode>soap:Client</faultcode>
    <faultstring>
         Unmarshalling Error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'biddingStrategy'. One of '{"https://adwords.google.com/api/adwords/cm/v201309":conversionOptimizerEligibility, "https://adwords.google.com/api/adwords/cm/v201309":adServingOptimizationStatus, "https://adwords.google.com/api/adwords/cm/v201309":frequencyCap, "https://adwords.google.com/api/adwords/cm/v201309":settings, "https://adwords.google.com/api/adwords/cm/v201309":networkSetting, "https://adwords.google.com/api/adwords/cm/v201309":biddingStrategyConfiguration, "https://adwords.google.com/api/adwords/cm/v201309":forwardCompatibilityMap}' is expected. 
   </faultstring>
  </soap:Fault>
 </soap:Body>
</soap:Envelope>

I am sending the following XML/SOAP request using cUrl which is the similar code given on AdWords tutorial (https://developers.google.com/adwords/api/docs/guides/soap) .

<?xml version="1.0" encoding="UTF-8"?>
  <soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns="https://adwords.google.com/api/adwords/cm/v201309">
    <soap:Header>
      <RequestHeader>
        <authToken>MYAUTHTOKEN</authToken>
        <userAgent>curl-tutorial</userAgent>
        <developerToken>MYDEVTOKEN</developerToken>
        <clientCustomerId>MYCUSTOMERID</clientCustomerId>
      </RequestHeader>
    </soap:Header>
    <soap:Body>
      <mutate>
        <operations>
          <operator>ADD</operator>
          <operand>
            <name>Test File</name>
            <budget>
              <period>DAILY</period>
              <amount>
                <microAmount>1000000000</microAmount>
              </amount>
              <deliveryMethod>STANDARD</deliveryMethod>
            </budget>
            <biddingStrategy
              xmlns:cm="https://adwords.google.com/api/adwords/cm/v201309"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:type="cm:ManualCPC"/>
            <settings
              xmlns:cm="https://adwords.google.com/api/adwords/cm/v201309"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:type="cm:KeywordMatchSetting">
              <cm:optIn>false</cm:optIn>
            </settings>
          </operand>
        </operations>
      </mutate>
    </soap:Body>
  </soap:Envelope>

I utilized the above XML/SOAP request in my cUrl request as:

curl --header "Content-Type: application/soap+xml" 
 --data @test.xml  https://adwords.google.com/api/adwords/cm/v201309/CampaignService

I have searched over the internet regarding the same issue I'm facing but no where I could find the solution. Please let me know if I'm doing anything wrong or let me know if there is any other way out.

Upvotes: 1

Views: 1953

Answers (1)

iluxa
iluxa

Reputation: 6969

Campaigns don't have biddingStrategies. They have biddingStrategyConfigurations. Take a look at the reference: https://developers.google.com/adwords/api/docs/reference/v201309/CampaignService.Campaign

Upvotes: 1

Related Questions