<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://marketing.ews.yahooapis.com/V4" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://marketing.ews.yahooapis.com/V4" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://marketing.ews.yahooapis.com/V4" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <xsd:annotation>
                <xsd:appinfo>
                    <tns:version>4.2.0</tns:version>
                </xsd:appinfo>
            </xsd:annotation>
            <xsd:element name="commandGroup">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="license">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="masterAccountID">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="quotaUsedForThisRequest">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="remainingQuota">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="timeTakenMillis">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="ApiFault" type="tns:ApiFault"/>
            <xsd:element name="getForecastByAdGroup">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="adGroupID" nillable="true" type="xsd:long"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="forecastRequestData" nillable="true" type="tns:ForecastRequestData"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastByAdGroupResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:ForecastResponse"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastForKeyword">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="keyword" nillable="true" type="xsd:string"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="adGroupID" nillable="true" type="xsd:long"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="forecastRequestData" nillable="true" type="tns:ForecastRequestData"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastForKeywordBatch">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="batchKeywords" nillable="true" type="tns:ArrayOfForecastKeywordBatch"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="forecastRequestData" nillable="true" type="tns:ForecastRequestData"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastForKeywordBatchResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:ArrayOfForecastKeywordBatchResponse"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastForKeywordResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:ForecastResponse"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastForKeywords">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="forecastKeywords" nillable="true" type="tns:ArrayOfForecastKeyword"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="adGroupID" nillable="true" type="xsd:long"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="forecastRequestData" nillable="true" type="tns:ForecastRequestData"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getForecastForKeywordsResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:ForecastKeywordResponse"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getHistoricalDataForKeywords">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="keywords" nillable="true" type="tns:ArrayOfHistoricalKeyword"/>
                        <xsd:element maxOccurs="1" minOccurs="1" name="historicalRequestData" nillable="true" type="tns:HistoricalRequestData"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getHistoricalDataForKeywordsResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:ArrayOfHistoricalKeywordResponse"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="onBehalfOfPassword">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="onBehalfOfUsername">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:simpleType name="ForecastMatchType">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="AdvancedMatch"/>
                    <xsd:enumeration value="SponsoredSearch"/>
                    <xsd:enumeration value="ContentMatch"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType name="KeywordForecastMatchType">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="AdvancedMatch"/>
                    <xsd:enumeration value="SponsoredSearch"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:complexType name="ApiFault">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="code" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="message" nillable="true" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfError">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="Error" nillable="true" type="tns:Error"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfForecastKeyword">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="ForecastKeyword" nillable="true" type="tns:ForecastKeyword"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfForecastKeywordBatch">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="ForecastKeywordBatch" nillable="true" type="tns:ForecastKeywordBatch"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfForecastKeywordBatchResponse">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="ForecastKeywordBatchResponse" nillable="true" type="tns:ForecastKeywordBatchResponse"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfForecastMatchType">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="ForecastMatchType" nillable="true" type="tns:ForecastMatchType"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfForecastResponseData">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="ForecastResponseData" nillable="true" type="tns:ForecastResponseData"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfHistoricalKeyword">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="HistoricalKeyword" nillable="true" type="tns:HistoricalKeyword"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfHistoricalKeywordResponse">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="HistoricalKeywordResponse" nillable="true" type="tns:HistoricalKeywordResponse"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfHistoricalResponseData">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="HistoricalResponseData" nillable="true" type="tns:HistoricalResponseData"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfKeywordForecastMatchType">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="KeywordForecastMatchType" nillable="true" type="tns:KeywordForecastMatchType"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfString">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="string" nillable="true" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ArrayOfWarning">
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="Warning" nillable="true" type="tns:Warning"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="Error">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="code" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="message" nillable="true" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastKeyword">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="contentMatchMaxBid" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="keyword" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="sponsoredSearchMaxBid" nillable="true" type="xsd:double"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastKeywordBatch">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="adGroupID" nillable="true" type="xsd:long"/>
                    <xsd:element minOccurs="0" name="contentMatchMaxBid" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="keyword" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="matchTypes" nillable="true" type="tns:ArrayOfForecastMatchType"/>
                    <xsd:element minOccurs="0" name="sponsoredSearchMaxBid" nillable="true" type="xsd:double"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastKeywordBatchResponse">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="canonKeyword" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="errors" nillable="true" type="tns:ArrayOfError"/>
                    <xsd:element minOccurs="0" name="forecastLandscape" nillable="true" type="tns:ArrayOfForecastResponseData"/>
                    <xsd:element minOccurs="0" name="forecastResponseDetail" nillable="true" type="tns:ForecastResponseData"/>
                    <xsd:element minOccurs="0" name="keyword" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="matchTypes" nillable="true" type="tns:ArrayOfForecastMatchType"/>
                    <xsd:element minOccurs="0" name="operationSucceeded" nillable="true" type="xsd:boolean"/>
                    <xsd:element minOccurs="0" name="warnings" nillable="true" type="tns:ArrayOfWarning"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastKeywordResponse">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="customizedResponseByAdGroup" nillable="true" type="tns:ForecastResponseData"/>
                    <xsd:element minOccurs="0" name="defaultResponseByAdGroup" nillable="true" type="tns:ForecastResponseData"/>
                    <xsd:element minOccurs="0" name="landscapeByAdGroup" nillable="true" type="tns:ArrayOfForecastResponseData"/>
                    <xsd:element minOccurs="0" name="warnings" nillable="true" type="tns:ArrayOfWarning"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastRequestData">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="accountID" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="contentMatchMaxBid" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="geoTargets" nillable="true" type="tns:ArrayOfString"/>
                    <xsd:element minOccurs="0" name="marketID" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="matchTypes" nillable="true" type="tns:ArrayOfForecastMatchType"/>
                    <xsd:element minOccurs="0" name="sponsoredSearchMaxBid" nillable="true" type="xsd:double"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastResponse">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="forecastLandscape" nillable="true" type="tns:ArrayOfForecastResponseData"/>
                    <xsd:element minOccurs="0" name="forecastResponseDetail" nillable="true" type="tns:ForecastResponseData"/>
                    <xsd:element minOccurs="0" name="warnings" nillable="true" type="tns:ArrayOfWarning"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="ForecastResponseData">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="averagePosition" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="clicks" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="costPerClick" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="impressions" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="maxBid" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="missedClicks" nillable="true" type="xsd:double"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="HistoricalKeyword">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="keyword" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="matchTypes" nillable="true" type="tns:ArrayOfKeywordForecastMatchType"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="HistoricalKeywordResponse">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="historicalData" nillable="true" type="tns:ArrayOfHistoricalResponseData"/>
                    <xsd:element minOccurs="0" name="keyword" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="matchTypes" nillable="true" type="tns:ArrayOfKeywordForecastMatchType"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="HistoricalRequestData">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="accountID" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="endDate" nillable="true" type="xsd:dateTime"/>
                    <xsd:element minOccurs="0" name="marketID" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="matchTypes" nillable="true" type="tns:ArrayOfKeywordForecastMatchType"/>
                    <xsd:element minOccurs="0" name="startDate" nillable="true" type="xsd:dateTime"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="HistoricalResponseData">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="avgSearches" nillable="true" type="xsd:double"/>
                    <xsd:element minOccurs="0" name="competitiveRating" nillable="true" type="xsd:long"/>
                    <xsd:element minOccurs="0" name="errors" nillable="true" type="tns:ArrayOfError"/>
                    <xsd:element minOccurs="0" name="monthYear" nillable="true" type="xsd:dateTime"/>
                    <xsd:element minOccurs="0" name="operationSucceeded" nillable="true" type="xsd:boolean"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="Warning">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="code" nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" name="message" nillable="true" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:schema>
        <schema targetNamespace="http://schemas.xmlsoap.org/ws/2002/07/secext" xmlns="http://www.w3.org/2001/XMLSchema">
            <element name="Security" type="wsse:Security"/>
            <complexType name="Security">
                <sequence>
                    <element name="UsernameToken" type="wsse:UsernameToken"/>
                </sequence>
            </complexType>
            <complexType name="UsernameToken">
                <sequence>
                    <element name="Username" type="string"/>
                    <element name="Password" type="string"/>
                </sequence>
            </complexType>
        </schema>
    </wsdl:types>
    <wsdl:message name="ApiFault">
        <wsdl:part element="tns:ApiFault" name="ApiFault"/>
    </wsdl:message>
    <wsdl:message name="Security">
        <wsdl:part element="wsse:Security" name="Security"/>
    </wsdl:message>
    <wsdl:message name="commandGroup">
        <wsdl:part element="tns:commandGroup" name="commandGroup"/>
    </wsdl:message>
    <wsdl:message name="getForecastByAdGroupRequest">
        <wsdl:part element="tns:getForecastByAdGroup" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastByAdGroupResponse">
        <wsdl:part element="tns:getForecastByAdGroupResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastForKeywordBatchRequest">
        <wsdl:part element="tns:getForecastForKeywordBatch" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastForKeywordBatchResponse">
        <wsdl:part element="tns:getForecastForKeywordBatchResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastForKeywordRequest">
        <wsdl:part element="tns:getForecastForKeyword" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastForKeywordResponse">
        <wsdl:part element="tns:getForecastForKeywordResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastForKeywordsRequest">
        <wsdl:part element="tns:getForecastForKeywords" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getForecastForKeywordsResponse">
        <wsdl:part element="tns:getForecastForKeywordsResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getHistoricalDataForKeywordsRequest">
        <wsdl:part element="tns:getHistoricalDataForKeywords" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="getHistoricalDataForKeywordsResponse">
        <wsdl:part element="tns:getHistoricalDataForKeywordsResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="license">
        <wsdl:part element="tns:license" name="license"/>
    </wsdl:message>
    <wsdl:message name="masterAccountID">
        <wsdl:part element="tns:masterAccountID" name="masterAccountID"/>
    </wsdl:message>
    <wsdl:message name="onBehalfOfPassword">
        <wsdl:part element="tns:onBehalfOfPassword" name="onBehalfOfPassword"/>
    </wsdl:message>
    <wsdl:message name="onBehalfOfUsername">
        <wsdl:part element="tns:onBehalfOfUsername" name="onBehalfOfUsername"/>
    </wsdl:message>
    <wsdl:message name="quotaUsedForThisRequest">
        <wsdl:part element="tns:quotaUsedForThisRequest" name="quotaUsedForThisRequest"/>
    </wsdl:message>
    <wsdl:message name="remainingQuota">
        <wsdl:part element="tns:remainingQuota" name="remainingQuota"/>
    </wsdl:message>
    <wsdl:message name="timeTakenMillis">
        <wsdl:part element="tns:timeTakenMillis" name="timeTakenMillis"/>
    </wsdl:message>
    <wsdl:portType name="ForecastService">
        <wsdl:operation name="getForecastByAdGroup">
            <wsdl:input message="tns:getForecastByAdGroupRequest" name="getForecastByAdGroupRequest"/>
            <wsdl:output message="tns:getForecastByAdGroupResponse" name="getForecastByAdGroupResponse"/>
            <wsdl:fault message="tns:ApiFault" name="ApiFault"/>
        </wsdl:operation>
        <wsdl:operation name="getForecastForKeyword">
            <wsdl:input message="tns:getForecastForKeywordRequest" name="getForecastForKeywordRequest"/>
            <wsdl:output message="tns:getForecastForKeywordResponse" name="getForecastForKeywordResponse"/>
            <wsdl:fault message="tns:ApiFault" name="ApiFault"/>
        </wsdl:operation>
        <wsdl:operation name="getForecastForKeywordBatch">
            <wsdl:input message="tns:getForecastForKeywordBatchRequest" name="getForecastForKeywordBatchRequest"/>
            <wsdl:output message="tns:getForecastForKeywordBatchResponse" name="getForecastForKeywordBatchResponse"/>
            <wsdl:fault message="tns:ApiFault" name="ApiFault"/>
        </wsdl:operation>
        <wsdl:operation name="getForecastForKeywords">
            <wsdl:input message="tns:getForecastForKeywordsRequest" name="getForecastForKeywordsRequest"/>
            <wsdl:output message="tns:getForecastForKeywordsResponse" name="getForecastForKeywordsResponse"/>
            <wsdl:fault message="tns:ApiFault" name="ApiFault"/>
        </wsdl:operation>
        <wsdl:operation name="getHistoricalDataForKeywords">
            <wsdl:input message="tns:getHistoricalDataForKeywordsRequest" name="getHistoricalDataForKeywordsRequest"/>
            <wsdl:output message="tns:getHistoricalDataForKeywordsResponse" name="getHistoricalDataForKeywordsResponse"/>
            <wsdl:fault message="tns:ApiFault" name="ApiFault"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="ForecastServiceHttpBinding" type="tns:ForecastService">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="getForecastByAdGroup">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="getForecastByAdGroupRequest">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfUsername" part="onBehalfOfUsername" use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfPassword" part="onBehalfOfPassword" use="literal"/>
                <wsdlsoap:header message="tns:masterAccountID" part="masterAccountID" use="literal"/>
                <wsdlsoap:header message="tns:license" part="license" use="literal"/>
                <wsdlsoap:header message="tns:Security" part="Security" use="literal"/>
            </wsdl:input>
            <wsdl:output name="getForecastByAdGroupResponse">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:commandGroup" part="commandGroup" use="literal"/>
                <wsdlsoap:header message="tns:remainingQuota" part="remainingQuota" use="literal"/>
                <wsdlsoap:header message="tns:quotaUsedForThisRequest" part="quotaUsedForThisRequest" use="literal"/>
                <wsdlsoap:header message="tns:timeTakenMillis" part="timeTakenMillis" use="literal"/>
            </wsdl:output>
            <wsdl:fault name="ApiFault">
                <wsdlsoap:fault name="ApiFault" use="literal"/>
            </wsdl:fault>
        </wsdl:operation>
        <wsdl:operation name="getForecastForKeyword">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="getForecastForKeywordRequest">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfUsername" part="onBehalfOfUsername" use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfPassword" part="onBehalfOfPassword" use="literal"/>
                <wsdlsoap:header message="tns:masterAccountID" part="masterAccountID" use="literal"/>
                <wsdlsoap:header message="tns:license" part="license" use="literal"/>
                <wsdlsoap:header message="tns:Security" part="Security" use="literal"/>
            </wsdl:input>
            <wsdl:output name="getForecastForKeywordResponse">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:commandGroup" part="commandGroup" use="literal"/>
                <wsdlsoap:header message="tns:remainingQuota" part="remainingQuota" use="literal"/>
                <wsdlsoap:header message="tns:quotaUsedForThisRequest" part="quotaUsedForThisRequest" use="literal"/>
                <wsdlsoap:header message="tns:timeTakenMillis" part="timeTakenMillis" use="literal"/>
            </wsdl:output>
            <wsdl:fault name="ApiFault">
                <wsdlsoap:fault name="ApiFault" use="literal"/>
            </wsdl:fault>
        </wsdl:operation>
        <wsdl:operation name="getForecastForKeywordBatch">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="getForecastForKeywordBatchRequest">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfUsername" part="onBehalfOfUsername" use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfPassword" part="onBehalfOfPassword" use="literal"/>
                <wsdlsoap:header message="tns:masterAccountID" part="masterAccountID" use="literal"/>
                <wsdlsoap:header message="tns:license" part="license" use="literal"/>
                <wsdlsoap:header message="tns:Security" part="Security" use="literal"/>
            </wsdl:input>
            <wsdl:output name="getForecastForKeywordBatchResponse">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:commandGroup" part="commandGroup" use="literal"/>
                <wsdlsoap:header message="tns:remainingQuota" part="remainingQuota" use="literal"/>
                <wsdlsoap:header message="tns:quotaUsedForThisRequest" part="quotaUsedForThisRequest" use="literal"/>
                <wsdlsoap:header message="tns:timeTakenMillis" part="timeTakenMillis" use="literal"/>
            </wsdl:output>
            <wsdl:fault name="ApiFault">
                <wsdlsoap:fault name="ApiFault" use="literal"/>
            </wsdl:fault>
        </wsdl:operation>
        <wsdl:operation name="getForecastForKeywords">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="getForecastForKeywordsRequest">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfUsername" part="onBehalfOfUsername" use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfPassword" part="onBehalfOfPassword" use="literal"/>
                <wsdlsoap:header message="tns:masterAccountID" part="masterAccountID" use="literal"/>
                <wsdlsoap:header message="tns:license" part="license" use="literal"/>
                <wsdlsoap:header message="tns:Security" part="Security" use="literal"/>
            </wsdl:input>
            <wsdl:output name="getForecastForKeywordsResponse">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:commandGroup" part="commandGroup" use="literal"/>
                <wsdlsoap:header message="tns:remainingQuota" part="remainingQuota" use="literal"/>
                <wsdlsoap:header message="tns:quotaUsedForThisRequest" part="quotaUsedForThisRequest" use="literal"/>
                <wsdlsoap:header message="tns:timeTakenMillis" part="timeTakenMillis" use="literal"/>
            </wsdl:output>
            <wsdl:fault name="ApiFault">
                <wsdlsoap:fault name="ApiFault" use="literal"/>
            </wsdl:fault>
        </wsdl:operation>
        <wsdl:operation name="getHistoricalDataForKeywords">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="getHistoricalDataForKeywordsRequest">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfUsername" part="onBehalfOfUsername" use="literal"/>
                <wsdlsoap:header message="tns:onBehalfOfPassword" part="onBehalfOfPassword" use="literal"/>
                <wsdlsoap:header message="tns:masterAccountID" part="masterAccountID" use="literal"/>
                <wsdlsoap:header message="tns:license" part="license" use="literal"/>
                <wsdlsoap:header message="tns:Security" part="Security" use="literal"/>
            </wsdl:input>
            <wsdl:output name="getHistoricalDataForKeywordsResponse">
                <wsdlsoap:body use="literal"/>
                <wsdlsoap:header message="tns:commandGroup" part="commandGroup" use="literal"/>
                <wsdlsoap:header message="tns:remainingQuota" part="remainingQuota" use="literal"/>
                <wsdlsoap:header message="tns:quotaUsedForThisRequest" part="quotaUsedForThisRequest" use="literal"/>
                <wsdlsoap:header message="tns:timeTakenMillis" part="timeTakenMillis" use="literal"/>
            </wsdl:output>
            <wsdl:fault name="ApiFault">
                <wsdlsoap:fault name="ApiFault" use="literal"/>
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="ForecastServiceService">
        <wsdl:port binding="tns:ForecastServiceHttpBinding" name="ForecastService">
            <wsdlsoap:address location="https://USE_ADDRESS_RETURNED_BY_LOCATION_SERVICE/services/V4/ForecastService"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
