<?xml version="1.0"?>
<wsdl:definitions
  targetNamespace="http://elasticmapreduce.amazonaws.com/doc/2009-03-31"
  xmlns:tns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:wsa="http://www.w3.org/2005/08/addressing/"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <wsdl:types>

    <xs:schema
      targetNamespace="http://elasticmapreduce.amazonaws.com/doc/2009-03-31"
      elementFormDefault="qualified">

      <xs:element name="ResponseMetadata">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RequestId" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="Error">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Type">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="Receiver"/>
                  <xs:enumeration value="Sender"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="Code" type="xs:string"/>
            <xs:element name="Message" type="xs:string"/>
            <xs:element name="Detail">
              <xs:complexType>
                <xs:sequence>
                  <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##any" processContents="lax"/>
                </xs:sequence>
                <xs:anyAttribute namespace="##other" processContents="lax"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="ErrorResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:Error" maxOccurs="unbounded"/>
            <xs:element name="RequestId" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="AddInstanceGroups">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p>Input to an AddInstanceGroups call.</p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="InstanceGroups" type="tns:InstanceGroupConfigList">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Instance Groups to add.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="JobFlowId" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Job flow in which to add the instance groups.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="AddInstanceGroupsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:AddInstanceGroupsResult"/>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="AddInstanceGroupsResult">
        <xs:complexType>

            <xs:annotation>
              <xs:documentation><![CDATA[
                  <p>Output from an AddInstanceGroups call.</p>
               ]]></xs:documentation>
            </xs:annotation>
            
          <xs:sequence>
            <xs:element name="JobFlowId" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The job flow ID in which the instance groups are added.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceGroupIds" type="tns:InstanceGroupIdsList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Instance group IDs of the newly created instance groups.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="AddJobFlowSteps">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p> The input argument to the <a>AddJobFlow</a> operation. </p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="JobFlowId" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p> A string that uniquely identifies the job flow. This identifier is returned by
                          <a>RunJobFlow</a> and can also be obtained from <a>DescribeJobFlows</a>. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Steps" type="tns:StepConfigList">

              <xs:annotation>
                <xs:documentation><![CDATA[
              
                    <p> A list of <a>StepConfig</a> to be executed by the job flow. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="AddJobFlowStepsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="TerminateJobFlows">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p> Input to the <a>TerminateJobFlows</a> operation. </p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="JobFlowIds" type="tns:StringList">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of job flows to be shutdown.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="TerminateJobFlowsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="DescribeJobFlows">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p> The input for the <a>DescribeJobFlows</a> operation. </p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="CreatedAfter" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Return only job flows created after this date and time.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="CreatedBefore" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Return only job flows created before this date and time.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="JobFlowIds" type="tns:StringList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Return only job flows whose job flow ID is contained in this list. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="JobFlowStates" type="tns:JobFlowExecutionStateList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Return only job flows whose state is contained in this list.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="DescribeJobFlowsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:DescribeJobFlowsResult"/>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="DescribeJobFlowsResult">
        <xs:complexType>

            <xs:annotation>
              <xs:documentation><![CDATA[
                  <p> The output for the <a>DescribeJobFlows</a> operation. </p>
               ]]></xs:documentation>
            </xs:annotation>
            
          <xs:sequence>
            <xs:element name="JobFlows" type="tns:JobFlowDetailList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of job flows matching the parameters supplied.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="SetTerminationProtection">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p> The input argument to the <a>TerminationProtection</a> operation. </p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="JobFlowIds" type="tns:StringList">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p> A list of strings that uniquely identify the job flows to protect. This identifier is returned by
                       <a>RunJobFlow</a> and can also be obtained from <a>DescribeJobFlows</a> . </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="TerminationProtected" type="xs:boolean">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p> A Boolean that indicates whether to protect the job flow and 
                       prevent the Amazon EC2 instances in the cluster from shutting down due to 
                       API calls, user intervention, or job-flow error. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="SetTerminationProtectionResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="RunJobFlow">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p> Input to the <a>RunJobFlow</a> operation. </p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="Name" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The name of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="LogUri" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the location in Amazon S3 to write the log files of the job flow. If a value is
                       not provided, logs are not created.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="AdditionalInfo" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A JSON string for selecting additional features.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Instances" type="tns:JobFlowInstancesConfig">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p> A specification of the number and type of Amazon EC2 instances on which to run the job
                       flow. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Steps" type="tns:StepConfigList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of steps to be executed by the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="BootstrapActions" type="tns:BootstrapActionConfigList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p> A list of bootstrap actions that will be run before Hadoop is started on the cluster
                       nodes. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="RunJobFlowResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:RunJobFlowResult"/>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="RunJobFlowResult">
        <xs:complexType>

            <xs:annotation>
              <xs:documentation><![CDATA[
                  <p> The result of the <a>RunJobFlow</a> operation. </p>
               ]]></xs:documentation>
            </xs:annotation>
            
          <xs:sequence>
            <xs:element name="JobFlowId" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>An unique identifier for the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="ModifyInstanceGroups">
        <xs:complexType>

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p>Change the size of some instance groups.</p>
             ]]></xs:documentation>
          </xs:annotation>
          
          <xs:sequence>
            <xs:element name="InstanceGroups" type="tns:InstanceGroupModifyConfigList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Instance groups to change.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="ModifyInstanceGroupsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:ResponseMetadata" minOccurs="1"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:complexType name="InstanceGroupDetailList">
        <xs:sequence>
          <xs:element name="member" type="tns:InstanceGroupDetail" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="JobFlowExecutionStatusDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Describes the status of the job flow.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="State" type="tns:JobFlowExecutionState">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The state of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="CreationDateTime" type="xs:dateTime">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The creation date and time of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="StartDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The start date and time of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="ReadyDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The date and time when the job flow was ready to start running bootstrap actions.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="EndDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The completion date and time of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="LastStateChangeReason" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Description of the job flow last changed state.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="JobFlowDetailList">
        <xs:sequence>
          <xs:element name="member" type="tns:JobFlowDetail" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="StepConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Specification of a job flow step.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="Name" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The name of the job flow step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="ActionOnFailure" type="tns:ActionOnFailure" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the action to take if the job flow step fails.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="HadoopJarStep" type="tns:HadoopJarStepConfig">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the JAR file used for the job flow step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="InstanceGroupIdsList">
        <xs:sequence>
          <xs:element name="member" type="tns:XmlStringMaxLen256" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="StepExecutionStatusDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Specifies the execution state of a step.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="State" type="tns:StepExecutionState">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The state of the job flow step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="CreationDateTime" type="xs:dateTime">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The creation date and time of the step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="StartDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The start date and time of the step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="EndDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The completion date and time of the step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="LastStateChangeReason" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A description of the step's current state.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:simpleType name="JobFlowExecutionState">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p> The type of instance. </p>
              <enumValues>
                 <value name="JobFlowExecutionState$COMPLETED">
                    <p>A small instance</p>
                 </value>
                 <value name="JobFlowExecutionState$FAILED">
                    <p>A large instance</p>
                 </value>
              </enumValues>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:restriction base="xs:string">
          <xs:enumeration value="COMPLETED"/>
          <xs:enumeration value="FAILED"/>
          <xs:enumeration value="TERMINATED"/>
          <xs:enumeration value="RUNNING"/>
          <xs:enumeration value="SHUTTING_DOWN"/>
          <xs:enumeration value="STARTING"/>
          <xs:enumeration value="WAITING"/>
          <xs:enumeration value="BOOTSTRAPPING"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:complexType name="JobFlowExecutionStateList">
        <xs:sequence>
          <xs:element name="member" type="tns:JobFlowExecutionState" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="KeyValueList">
        <xs:sequence>
          <xs:element name="member" type="tns:KeyValue" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="PlacementType">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Specifies the Amazon EC2 location for the job flow.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="AvailabilityZone" type="tns:XmlString">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The Amazon EC2 Availability Zone for the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="JobFlowInstancesConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>A description of the Amazon EC2 instance running the job flow. </p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="MasterInstanceType" type="tns:InstanceType" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The EC2 instance type of the master node.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="SlaveInstanceType" type="tns:InstanceType" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The EC2 instance type of the slave nodes.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceCount" type="xs:integer" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The number of Amazon EC2 instances used to execute the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceGroups" type="tns:InstanceGroupConfigList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Configuration for the job flow's instance groups.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Ec2KeyName" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the name of the Amazon EC2 key pair that can be used to ssh to the master node as
                       the user called "hadoop."</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Placement" type="tns:PlacementType" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the Availability Zone the job flow will run in.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="KeepJobFlowAliveWhenNoSteps" type="xs:boolean" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies whether the job flow should terminate after completing all steps.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="TerminationProtected" type="xs:boolean" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies whether to lock the job flow to prevent the Amazon EC2 instances from being terminated by API call, 
                       user intervention, or in the event of a job flow error.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="HadoopVersion" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the Hadoop version for the job flow. Valid inputs are "0.18" or "0.20".</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:simpleType name="ActionOnFailure">
        <xs:restriction base="xs:string">
          <xs:enumeration value="TERMINATE_JOB_FLOW"/>
          <xs:enumeration value="CANCEL_AND_WAIT"/>
          <xs:enumeration value="CONTINUE"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:complexType name="InstanceGroupModifyConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Modify an instance group size.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="InstanceGroupId" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Unique ID of the instance group to expand or shrink.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceCount" type="xs:integer">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Target size for the instance group.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="BootstrapActionDetailList">
        <xs:sequence>
          <xs:element name="member" type="tns:BootstrapActionDetail" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:simpleType name="InstanceType">
        <xs:restriction base="xs:string">
          <xs:pattern value="[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*"/>
          <xs:minLength value="1"/>
          <xs:maxLength value="256"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:complexType name="KeyValue">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>A key value pair.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="Key" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The unique identifier of a key value pair.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Value" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The value part of the identified key.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="ScriptBootstrapActionConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Configuration of the script to run during a bootstrap action.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="Path" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Location of the script to run during a bootstrap action. Can be either a location in Amazon
                       S3 or on a local file system.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Args" type="tns:StringList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of command line arguments to pass to the bootstrap action script.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="BootstrapActionConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Configuration of a bootstrap action.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="Name" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The name of the bootstrap action.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="ScriptBootstrapAction" type="tns:ScriptBootstrapActionConfig">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The script run by the bootstrap action.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="BootstrapActionConfigList">
        <xs:sequence>
          <xs:element name="member" type="tns:BootstrapActionConfig" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:simpleType name="InstanceRoleType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="MASTER"/>
          <xs:enumeration value="CORE"/>
          <xs:enumeration value="TASK"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:simpleType name="StepExecutionState">
        <xs:restriction base="xs:string">
          <xs:enumeration value="PENDING"/>
          <xs:enumeration value="RUNNING"/>
          <xs:enumeration value="CONTINUE"/>
          <xs:enumeration value="COMPLETED"/>
          <xs:enumeration value="CANCELLED"/>
          <xs:enumeration value="FAILED"/>
          <xs:enumeration value="INTERRUPTED"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:complexType name="InstanceGroupDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Detailed information about an instance group. </p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="InstanceGroupId" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Unique identifier for the instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Name" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Friendly name for the instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceRole" type="tns:InstanceRoleType">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Instance group role in the cluster </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceType" type="tns:InstanceType">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Amazon EC2 Instance type.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceRequestCount" type="xs:integer">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Target number of instances to run in the instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceRunningCount" type="xs:integer">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Actual count of running instances. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="State" type="tns:InstanceGroupState">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>State of instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="LastStateChangeReason" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Details regarding the state of the instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="CreationDateTime" type="xs:dateTime">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The date/time the instance group was created. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="StartDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The date/time the instance group was started.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="ReadyDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The date/time the instance group was available to the cluster. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="EndDateTime" type="xs:dateTime" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The date/time the instance group was terminated.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="StringList">
        <xs:sequence>
          <xs:element name="member" type="tns:XmlString" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="BootstrapActionDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Reports the configuration of a bootstrap action in a job flow.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="BootstrapActionConfig" type="tns:BootstrapActionConfig" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A description of the bootstrap action.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="InstanceGroupConfigList">
        <xs:sequence>
          <xs:element name="member" type="tns:InstanceGroupConfig" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:simpleType name="XmlString">
        <xs:restriction base="xs:string">
          <xs:pattern value="[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*"/>
          <xs:minLength value="0"/>
          <xs:maxLength value="10280"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:complexType name="InstanceGroupConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Configuration defining a new instance group.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="Name" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Friendly name given to the instance group.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceRole" type="tns:InstanceRoleType">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The role of the instance group in the cluster.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceType" type="tns:InstanceType">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The Amazon EC2 instance type for all instances in the instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceCount" type="xs:integer">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Target number of instances for the instance group. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="JobFlowDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p> A description of a job flow.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="JobFlowId" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The job flow identifier.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Name" type="tns:XmlStringMaxLen256">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The name of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="LogUri" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The location in Amazon S3 where log files for the job are stored. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="ExecutionStatusDetail" type="tns:JobFlowExecutionStatusDetail">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Describes the execution status of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Instances" type="tns:JobFlowInstancesDetail">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Describes the Amazon EC2 instances of the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Steps" type="tns:StepDetailList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of steps run by the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="BootstrapActions" type="tns:BootstrapActionDetailList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of the bootstrap actions run by the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="StepDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Combines the execution state and configuration of a step.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="StepConfig" type="tns:StepConfig">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The step configuration.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="ExecutionStatusDetail" type="tns:StepExecutionStatusDetail">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The description of the step status.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:simpleType name="InstanceGroupState">
        <xs:restriction base="xs:string">
          <xs:enumeration value="PROVISIONING"/>
          <xs:enumeration value="STARTING"/>
          <xs:enumeration value="BOOTSTRAPPING"/>
          <xs:enumeration value="RUNNING"/>
          <xs:enumeration value="RESIZING"/>
          <xs:enumeration value="ARRESTED"/>
          <xs:enumeration value="SHUTTING_DOWN"/>
          <xs:enumeration value="TERMINATED"/>
          <xs:enumeration value="FAILED"/>
          <xs:enumeration value="ENDED"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:simpleType name="XmlStringMaxLen256">
        <xs:restriction base="xs:string">
          <xs:pattern value="[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*"/>
          <xs:minLength value="0"/>
          <xs:maxLength value="256"/>
        </xs:restriction>
      </xs:simpleType>

      <xs:complexType name="StepConfigList">
        <xs:sequence>
          <xs:element name="member" type="tns:StepConfig" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="InstanceGroupModifyConfigList">
        <xs:sequence>
          <xs:element name="member" type="tns:InstanceGroupModifyConfig" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="HadoopJarStepConfig">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>A job flow step consisting of a JAR file whose main function will be executed. The main
                 function submits a job for Hadoop to execute and waits for the job to finish or fail. </p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="Properties" type="tns:KeyValueList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of Java properties that are set when the step runs. You can use these properties to
                       pass key value pairs to your main function.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Jar" type="tns:XmlString">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A path to a JAR file run during the step.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="MainClass" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The name of the main class in the specified Java file. If not specified, the JAR file
                       should specify a Main-Class in its manifest file.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Args" type="tns:StringList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>A list of command line arguments passed to the JAR file's main function when executed.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="StepDetailList">
        <xs:sequence>
          <xs:element name="member" type="tns:StepDetail" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="JobFlowInstancesDetail">

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Specify the type of Amazon EC2 instances to run the job flow on.</p>
           ]]></xs:documentation>
        </xs:annotation>
        
        <xs:sequence>
            <xs:element name="MasterInstanceType" type="tns:InstanceType">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The Amazon EC2 master node instance type.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="MasterPublicDnsName" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The DNS name of the master node.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="MasterInstanceId" type="tns:XmlString" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The Amazon EC2 instance identifier of the master node.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="SlaveInstanceType" type="tns:InstanceType">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The Amazon EC2 slave node instance type.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceCount" type="xs:integer">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The number of Amazon EC2 instances in the cluster. If the value is 1, the same instance
                       serves as both the master and slave node. If the value is greater than 1, one instance is
                       the master node and all others are slave nodes.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="InstanceGroups" type="tns:InstanceGroupDetailList" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Details about the job flow's instance groups. </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="NormalizedInstanceHours" type="xs:integer" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>An approximation of the cost of the job flow, represented in m1.small/hours. This value is
                       incremented once for every hour an m1.small runs. Larger instances are weighted more, so an
                       Amazon EC2 instance that is roughly four times more expensive would result in the
                       normalized instance hours being incremented by four. This result is only an approximation
                       and does not reflect the actual billing rate.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Ec2KeyName" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>The name of an Amazon EC2 key pair that can be used to ssh to the master node of job
                       flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="Placement" type="tns:PlacementType" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the Amazon EC2 Availability Zone for the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="KeepJobFlowAliveWhenNoSteps" type="xs:boolean" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies whether or not the job flow should terminate after completing all steps.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="TerminationProtected" type="xs:boolean" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies whether the Amazon EC2 instances in the cluster are protected from termination by API calls, 
                       user intervention, or in the event of a job flow error.  </p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
            <xs:element name="HadoopVersion" type="tns:XmlStringMaxLen256" minOccurs="0">

              <xs:annotation>
                <xs:documentation><![CDATA[
                    <p>Specifies the Hadoop version for the job flow.</p>
                 ]]></xs:documentation>
              </xs:annotation>
              
            </xs:element>
        </xs:sequence>
      </xs:complexType>

    </xs:schema>

  </wsdl:types>

  <wsdl:message name="AddInstanceGroupsRequestMsg">
    <wsdl:part element="tns:AddInstanceGroups" name="body"/>
  </wsdl:message>

  <wsdl:message name="AddInstanceGroupsResponseMsg">
    <wsdl:part element="tns:AddInstanceGroupsResponse" name="body"/>
  </wsdl:message>

  <wsdl:message name="AddJobFlowStepsRequestMsg">
    <wsdl:part element="tns:AddJobFlowSteps" name="body"/>
  </wsdl:message>

  <wsdl:message name="AddJobFlowStepsResponseMsg">
    <wsdl:part element="tns:AddJobFlowStepsResponse" name="body"/>
  </wsdl:message>

  <wsdl:message name="TerminateJobFlowsRequestMsg">
    <wsdl:part element="tns:TerminateJobFlows" name="body"/>
  </wsdl:message>

  <wsdl:message name="TerminateJobFlowsResponseMsg">
    <wsdl:part element="tns:TerminateJobFlowsResponse" name="body"/>
  </wsdl:message>

  <wsdl:message name="DescribeJobFlowsRequestMsg">
    <wsdl:part element="tns:DescribeJobFlows" name="body"/>
  </wsdl:message>

  <wsdl:message name="DescribeJobFlowsResponseMsg">
    <wsdl:part element="tns:DescribeJobFlowsResponse" name="body"/>
  </wsdl:message>

  <wsdl:message name="SetTerminationProtectionRequestMsg">
    <wsdl:part element="tns:SetTerminationProtection" name="body"/>
  </wsdl:message>

  <wsdl:message name="SetTerminationProtectionResponseMsg">
    <wsdl:part element="tns:SetTerminationProtectionResponse" name="body"/>
  </wsdl:message>

  <wsdl:message name="RunJobFlowRequestMsg">
    <wsdl:part element="tns:RunJobFlow" name="body"/>
  </wsdl:message>

  <wsdl:message name="RunJobFlowResponseMsg">
    <wsdl:part element="tns:RunJobFlowResponse" name="body"/>
  </wsdl:message>

  <wsdl:message name="ModifyInstanceGroupsRequestMsg">
    <wsdl:part element="tns:ModifyInstanceGroups" name="body"/>
  </wsdl:message>

  <wsdl:message name="ModifyInstanceGroupsResponseMsg">
    <wsdl:part element="tns:ModifyInstanceGroupsResponse" name="body"/>
  </wsdl:message>

  <wsdl:portType name="ElasticMapReducePortType">

    <wsdl:operation name="AddInstanceGroups">
      <wsdl:documentation><![CDATA[
      <p>AddInstanceGroups adds an instance group to a running cluster.</p>

      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=AddInstanceGroups
&JobFlowId=j-3UN6WX5RRO2AG 
&InstanceGroups.member.1.Name="Task Instance Group" 
&InstanceGroups.member.1.InstanceRole=TASK
&InstanceGroups.member.1.Market=On_DEMAND 
&InstanceGroups.member.1.InstanceType=m1.small 
&InstanceGroups.member.1.InstanceRequestCount=2 
&AuthParams
</queryrequest>

         <queryresponse><AddInstanceGroupsResponse xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <InstanceGroupIds> 
      <InstanceGroup> 
         <InstanceGroupId> 
            i-3UN6WX5RRO2AG
         </InstanceGroupId> 
      </InstanceGroup> 
   </InstanceGroupIds>
</AddInstanceGroupsResponse></queryresponse>
      </examples>

   ]]></wsdl:documentation>
      <wsdl:input message="tns:AddInstanceGroupsRequestMsg" wsa:Action="urn:AddInstanceGroups"/>
      <wsdl:output message="tns:AddInstanceGroupsResponseMsg" wsa:Action="urn:AddInstanceGroups:Response"/>
    </wsdl:operation>

    <wsdl:operation name="AddJobFlowSteps">
      <wsdl:documentation><![CDATA[
      <p> AddJobFlowSteps adds new steps to a running job flow. A maximum of 256 steps are allowed
         in each job flow. </p>

      <p> A step specifies the location of a JAR file stored either on the master node of the job
         flow or in Amazon S3. Each step is performed by the main function of the main class of the
         JAR file. The main class can be specified either in the manifest of the JAR or by using the
         MainFunction parameter of the step. </p>
      <p> Elastic MapReduce executes each step in the order listed. For a step to be considered
         complete, the main function must exit with a zero exit code and all Hadoop jobs started
         while the step was running must have completed and run successfully. </p>
      <p> You can only add steps to a job flow that is in one of the following states: STARTING,
         BOOTSTAPPING, RUNNING, or WAITING.</p>
      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=AddJobFlowSteps
&JobFlowId=j-3UN6WX5RRO2AG
&Steps.member.1.Name=MyStep2
&Steps.member.1.ActionOnFailure=CONTINUE
&Steps.member.1.HadoopJarStep.Jar=MyJar
&Steps.member.1.HadoopJarStep.MainClass=MainClass
&Steps.member.1.HadoopJarStep.Args.member.1=arg1
&AuthParams</queryrequest>

         <queryresponse><AddJobFlowStepsResponse xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <ResponseMetadata> 
      <RequestId> 
         df6f4f4a-ed85-11dd-9877-6fad448a8419 
      </RequestId> 
   </ResponseMetadata> 
</AddJobFlowStepsResponse>
         </queryresponse>
      </examples>
   ]]></wsdl:documentation>
      <wsdl:input message="tns:AddJobFlowStepsRequestMsg" wsa:Action="urn:AddJobFlowSteps"/>
      <wsdl:output message="tns:AddJobFlowStepsResponseMsg" wsa:Action="urn:AddJobFlowSteps:Response"/>
    </wsdl:operation>

    <wsdl:operation name="TerminateJobFlows">
      <wsdl:documentation><![CDATA[
      <p> TerminateJobFlows shuts a list of job flows down. When a job flow is shut down, any step
         not yet completed is canceled and the EC2 instances on which the job flow is running are
         stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was
         specified when the job flow was created. </p>
      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=TerminateJobFlows
&JobFlowIds.member.1=j-3UN6WX5RRO2AG 
&AuthParams </queryrequest>

         <queryresponse><TerminateJobFlowsResponse xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <ResponseMetadata> 
      <RequestId> 
         2690d7eb-ed86-11dd-9877-6fad448a8419
      </RequestId> 
   </ResponseMetadata> 
</TerminateJobFlowsResponse>
         </queryresponse>
      </examples>
   ]]></wsdl:documentation>
      <wsdl:input message="tns:TerminateJobFlowsRequestMsg" wsa:Action="urn:TerminateJobFlows"/>
      <wsdl:output message="tns:TerminateJobFlowsResponseMsg" wsa:Action="urn:TerminateJobFlows:Response"/>
    </wsdl:operation>

    <wsdl:operation name="DescribeJobFlows">
      <wsdl:documentation><![CDATA[
      <p> DescribeJobFlows returns a list of job flows that match all of the supplied parameters.
         The parameters can include a list of job flow IDs, job flow states, and restrictions on job
         flow creation date and time.</p>
      <p> Regardless of supplied parameters, only job flows created within the last two months are
         returned.</p>
      <p> If no parameters are supplied, then job flows matching either of the following criteria
         are returned:</p>
      <ul>
         <li>Job flows created and completed in the last two weeks</li>
         <li> Job flows created within the last two months that are in one of the following states:
               <code>RUNNING</code>, <code>WAITING</code>, <code>SHUTTING_DOWN</code>,
               <code>STARTING</code>
         </li>
      </ul>
      <p> Amazon Elastic MapReduce can return a maximum of 512 job flow descriptions. </p>
      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=DescribeJobFlows
&JobFlowIds.member.1=j-3UN6WX5RRO2AG 
&AuthParams</queryrequest>

      <queryresponse><DescribeJobFlowsResponse xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <DescribeJobFlowsResult> 
      <JobFlows> 
         <member>
            <ExecutionStatusDetail> 
               <CreationDateTime> 
                  2009-01-28T21:49:16Z
               </CreationDateTime> 
               <StartDateTime> 
                  2009-01-28T21:49:16Z
               </StartDateTime> 
               <State> 
                  STARTING 
               </State>
            </ExecutionStatusDetail> 
            <Name> 
               MyJobFlowName 
            </Name> 
            <LogUri>
               mybucket/subdir/ 
            </LogUri> 
            <Steps> 
               <member>
                  <ExecutionStatusDetail> 
                     <CreationDateTime> 
                        2009-01-28T21:49:16Z
                     </CreationDateTime> 
                     <State> 
                        PENDING 
                     </State>
                  </ExecutionStatusDetail> 
                  <StepConfig> 
                     <HadoopJarStep> 
                        <Jar>
                           MyJarFile 
                        </Jar> 
                        <MainClass> 
                           MyMainClass 
                        </MainClass> 
                        <Args>
                           <member> 
                              arg1 
                           </member> 
                           <member> 
                              arg2 
                           </member> 
                        </Args>
                        <Properties/> 
                     </HadoopJarStep> 
                     <Name> 
                        MyStepName 
                     </Name>
                     <ActionOnFailure> 
                        CONTINUE 
                     </ActionOnFailure> 
                  </StepConfig>
               </member> 
            </Steps> 
            <JobFlowId> 
               j-3UN6WX5RRO2AG 
            </JobFlowId>
            <Instances> 
               <Placement> 
                  <AvailabilityZone> 
                     us-east-1a
                  </AvailabilityZone> 
               </Placement> 
               <SlaveInstanceType> 
                  m1.small
               </SlaveInstanceType> 
               <MasterInstanceType> 
                  m1.small
               </MasterInstanceType> 
               <Ec2KeyName> 
                  myec2keyname 
               </Ec2KeyName>
               <InstanceCount> 
                  4 
               </InstanceCount> 
               <KeepJobFlowAliveWhenNoSteps> 
                  true
               </KeepJobFlowAliveWhenNoSteps> 
               <TerminationProtected> 
                  true
               </TerminationProtected>
            </Instances> 
         </member>
      </JobFlows> 
   </DescribeJobFlowsResult> 
   <ResponseMetadata>
      <RequestId> 
         9cea3229-ed85-11dd-9877-6fad448a8419 
      </RequestId>
   </ResponseMetadata> 
</DescribeJobFlowsResponse> </queryresponse>
      </examples>
   ]]></wsdl:documentation>
      <wsdl:input message="tns:DescribeJobFlowsRequestMsg" wsa:Action="urn:DescribeJobFlows"/>
      <wsdl:output message="tns:DescribeJobFlowsResponseMsg" wsa:Action="urn:DescribeJobFlows:Response"/>
    </wsdl:operation>

    <wsdl:operation name="SetTerminationProtection">
      <wsdl:documentation><![CDATA[
      <p> SetTerminationProtection locks a job flow so the Amazon EC2 instances in the cluster 
         cannot be terminated by user intervention, an API call, or in the event of a job-flow error. 
         The cluster still terminates upon successful completion of the job flow. Calling 
         SetTerminationProtection on a job flow is analogous to calling the 
         Amazon EC2 DisableAPITermination API on all of the EC2 instances in a cluster.</p>
      
      <p> SetTerminationProtection is used to prevent accidental termination of a job flow and to 
         ensure that in the event of an error, the instances will persist so you can recover 
         any data stored in their ephemeral instance storage.</p>
      
      <p> To terminate a job flow that has been locked by setting SetTerminationProtection to <code>true</code>, 
         you must first unlock the job flow by a subsequent call to SetTerminationProtection 
         in which you set the value to <code>false</code>. </p>
      
      <p> For more information, go to <a href="http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_TerminationProtection.html">Protecting a Job Flow from Termination</a> in the 
         <i>Amazon Elastic MapReduce Developer's Guide.</i></p>
      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=SetTerminationProtection
&JobFlowIds.member.1=j-3UN6WX5RRO2AG
&TerminationProtected=true
&AuthParams</queryrequest>
         
         <queryresponse><SetTerminationProtection xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <ResponseMetadata> 
      <RequestId> 
         df6f4f4a-ed85-11dd-9877-6fad448a8419 
      </RequestId> 
   </ResponseMetadata> 
</SetTerminationProtectionResponse>
         </queryresponse>
      </examples>
   ]]></wsdl:documentation>
      <wsdl:input message="tns:SetTerminationProtectionRequestMsg" wsa:Action="urn:SetTerminationProtection"/>
      <wsdl:output message="tns:SetTerminationProtectionResponseMsg" wsa:Action="urn:SetTerminationProtection:Response"/>
    </wsdl:operation>

    <wsdl:operation name="RunJobFlow">
      <wsdl:documentation><![CDATA[
      <p> RunJobFlow creates and starts running a new job flow. The job flow will run the steps
         specified. Once the job flow completes, the cluster is stopped and the HDFS partition is
         lost. To prevent loss of data, configure the last step of the job flow to store results in
         Amazon S3. If the <a>JobFlowInstancesDetail</a> <code>KeepJobFlowAliveWhenNoSteps</code> parameter is
         set to <code>TRUE</code>, the job flow will transition to the WAITING state rather than
         shutting down once the steps have completed. </p>
      
      <p>For additional protection, you can set the 
         <a>JobFlowInstancesDetail</a> <code>TerminationProtected</code> parameter to <code>TRUE</code> to lock the 
         job flow and prevent it from being 
         terminated by API call, user intervention, or in the event of a job flow error.</p>

      <p>A maximum of 256 steps are allowed in each job flow.</p>

      <p>For long running job flows, we recommended that you periodically store your results.</p>


      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=RunJobFlow
&Name=MyJobFlowName 
&LogUri=s3n%3A%2F%2Fmybucket%2Fsubdir
&Instances.MasterInstanceType=m1.small 
&Instances.SlaveInstanceType=m1.small
&Instances.InstanceCount=4 
&Instances.Ec2KeyName=myec2keyname
&Instances.Placement.AvailabilityZone=us-east-1a
&Instances.KeepJobFlowAliveWhenNoSteps=true 
&Instances.TerminationProtected=true
&Steps.member.1.Name=MyStepName
&Steps.member.1.ActionOnFailure=CONTINUE
&Steps.member.1.HadoopJarStep.Jar=MyJarFile
&Steps.member.1.HadoopJarStep.MainClass=MyMainClass
&Steps.member.1.HadoopJarStep.Args.member.1=arg1
&Steps.member.1.HadoopJarStep.Args.member.2=arg2 
&AuthParams</queryrequest>

         <queryresponse><RunJobFlowResponse xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <RunJobFlowResult> 
      <JobFlowId> 
         j-3UN6WX5RRO2AG 
      </JobFlowId>
   </RunJobFlowResult> 
   <ResponseMetadata> 
      <RequestId>
         8296d8b8-ed85-11dd-9877-6fad448a8419 
      </RequestId> 
   </ResponseMetadata>
</RunJobFlowResponse> </queryresponse>
      </examples>
   ]]></wsdl:documentation>
      <wsdl:input message="tns:RunJobFlowRequestMsg" wsa:Action="urn:RunJobFlow"/>
      <wsdl:output message="tns:RunJobFlowResponseMsg" wsa:Action="urn:RunJobFlow:Response"/>
    </wsdl:operation>

    <wsdl:operation name="ModifyInstanceGroups">
      <wsdl:documentation><![CDATA[
      <p>ModifyInstanceGroups modifies the number of nodes and configuration settings of an instance
         group. The input parameters include the new target instance count for the group and the
         instance group ID. The call will either succeed or fail atomically.</p>

      <examples>
         <queryrequest>https://elasticmapreduce.amazonaws.com?Operation=ModifyInstanceGroups
&InstanceGroups.member.1.InstanceGroupId=i-3UN6WX5RRO2AG 
&InstanceGroups.member.1.InstanceRequestCount=2
&AuthParams</queryrequest>

         <queryresponse><ModifyInstanceGroupsResponse xmlns=&quot;http://elasticmapreduce.amazonaws.com/doc/2009-03-31&quot;>
   <ResponseMetadata> 
      <RequestId> 
         2690d7eb-ed86-11dd-9877-6fad448a8419
      </RequestId> 
   </ResponseMetadata> 
</ModifyInstanceGroupsResponse>
         </queryresponse>
      </examples>
      
      
      <!-- AddInstanceGroups Operation -->
      
   ]]></wsdl:documentation>
      <wsdl:input message="tns:ModifyInstanceGroupsRequestMsg" wsa:Action="urn:ModifyInstanceGroups"/>
      <wsdl:output message="tns:ModifyInstanceGroupsResponseMsg" wsa:Action="urn:ModifyInstanceGroups:Response"/>
    </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="ElasticMapReduceBinding" type="tns:ElasticMapReducePortType">

    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    <wsdl:operation name="AddInstanceGroups">
      <soap:operation soapAction="AddInstanceGroups"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="AddJobFlowSteps">
      <soap:operation soapAction="AddJobFlowSteps"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="TerminateJobFlows">
      <soap:operation soapAction="TerminateJobFlows"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="DescribeJobFlows">
      <soap:operation soapAction="DescribeJobFlows"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="SetTerminationProtection">
      <soap:operation soapAction="SetTerminationProtection"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="RunJobFlow">
      <soap:operation soapAction="RunJobFlow"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="ModifyInstanceGroups">
      <soap:operation soapAction="ModifyInstanceGroups"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>

  </wsdl:binding>

  <wsdl:service name="ElasticMapReduce">
    <wsdl:documentation><![CDATA[
      <p> This is the Amazon Elastic MapReduce API Reference. This guide provides descriptions and
         samples of the Amazon Elastic MapReduce APIs.</p>

      <p>Amazon Elastic MapReduce is a web service that makes it easy to process large amounts of
         data efficiently. Elastic MapReduce uses Hadoop processing combined with several AWS
         products to do tasks such as web indexing, data mining, log file analysis, machine
         learning, scientific simulation, and data warehousing.</p>

      <p>For more information about this product go to the <a href="http://aws.amazon.com/elasticmapreduce/">Amazon Elastic MapReduce</a> detail
         page. For specific information about setting up signatures and authorization through the
         API, go to <a href="http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/making_api_requests.html"> Amazon Elastic MapReduce Developer Guide</a>.
      </p>

   ]]></wsdl:documentation>
    <wsdl:port name="ElasticMapReducePort" binding="tns:ElasticMapReduceBinding">
      <soap:address location="http://change/me"/>
    </wsdl:port>
  </wsdl:service>

</wsdl:definitions>