<?xml version="1.0" encoding="UTF-8"?>
<xs:schema     
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkRequester/2005-10-01"
    xmlns:tns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkRequester/2005-10-01"
    elementFormDefault="qualified">
    
    <!-- GENERAL-->

    <xs:complexType name="Claim">
        <xs:sequence>
            <xs:element name="Type" type="xs:string"/>
            <xs:element name="Body" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="Price">
        <xs:sequence>
            <xs:element name="Amount" type="xs:decimal"/>
            <xs:element name="CurrencyCode" type="xs:string"/>
            <xs:element name="FormattedPrice" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="SortDirection">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Ascending" />
            <xs:enumeration value="Descending" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="QualificationRequirement">
        <xs:sequence>
            <xs:element name="QualificationTypeId" type="xs:string" />
            <xs:element name="Comparator" type="tns:Comparator" />
            <xs:element name="Value" type="xs:int" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="Comparator">
        <xs:restriction base="xs:string">
            <xs:enumeration value="LessThan" />
            <xs:enumeration value="LessThanOrEqualTo" />
            <xs:enumeration value="GreaterThan" />
            <xs:enumeration value="GreaterThanOrEqualTo" />
            <xs:enumeration value="EqualTo" />
            <xs:enumeration value="NotEqualTo" />
            <xs:enumeration value="Exists" />
        </xs:restriction>
    </xs:simpleType>

    <!-- HIT -->

    <!-- HIT helper structures -->
    
    <xs:simpleType name="HITStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Assignable" />
            <xs:enumeration value="NotAssignable" />
            <xs:enumeration value="Reviewable" />
            <xs:enumeration value="Disposed" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="HITReviewStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NotReviewed" />
            <xs:enumeration value="MarkedForReview" />
            <xs:enumeration value="ReviewedAppropriate" />
            <xs:enumeration value="ReviewedInappropriate" />
        </xs:restriction>
    </xs:simpleType>
  
    <xs:complexType name="HIT">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="HITId" type="xs:string" minOccurs="0" />
            <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0" />
            <xs:element name="Title" type="xs:string" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="Question" type="xs:string" minOccurs="0" />
            <xs:element name="Keywords" type="xs:string"  minOccurs="0" />
            <xs:element name="HITStatus" type="tns:HITStatus" minOccurs="0" />
            <xs:element name="MaxAssignments" type="xs:int" minOccurs="0" />
            <xs:element name="Reward" type="tns:Price" minOccurs="0" />
            <xs:element name="AutoApprovalDelayInSeconds" type="xs:long" minOccurs="0" />
            <xs:element name="Expiration" type="xs:dateTime" minOccurs="0" />
            <xs:element name="AssignmentDurationInSeconds" type="xs:long" minOccurs="0" />
            <xs:element name="NumberOfSimilarHITs" type="xs:int" minOccurs="0" />
            <xs:element name="RequesterAnnotation" type="xs:string" minOccurs="0" />
            <xs:element name="QualificationRequirement" type="tns:QualificationRequirement" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="HITReviewStatus" type="tns:HITReviewStatus" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <!-- Create HIT -->
    
    <xs:element name="CreateHIT">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Request" type="tns:CreateHITRequest" maxOccurs="unbounded"/>
                <xs:element name="Shared" type="tns:CreateHITRequest" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="CreateHITRequest">
        <xs:sequence>
            <xs:element name="MaxAssignments" type="xs:int" minOccurs="0" />
            <xs:element name="AutoApprovalDelayInSeconds" type="xs:long" minOccurs="0"/>
            <xs:element name="LifetimeInSeconds" type="xs:long" />
            <xs:element name="AssignmentDurationInSeconds" type="xs:long" />
            <xs:element name="Reward" type="tns:Price" />
            <xs:element name="Title" type="xs:string" />
            <xs:element name="Keywords" type="xs:string"  minOccurs="0" />
            <xs:element name="Description" type="xs:string" />
            <xs:element name="Question" type="xs:string" />
            <xs:element name="RequesterAnnotation" type="xs:string" minOccurs="0" />
            <xs:element name="QualificationRequirement" type="tns:QualificationRequirement" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="CreateHITResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Dispose reviewable HITs -->
    <xs:element name="DisposeHIT">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:DisposeHITRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:DisposeHITRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="DisposeHITRequest">
        <xs:sequence>
            <xs:element name="HITId" type="xs:string" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="DisposeHITResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="DisposeHITResult" type="tns:DisposeHITResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="DisposeHITResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    
    <!-- Disable HIT -->
    
    <xs:element name="DisableHIT">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Request" type="tns:DisableHITRequest" minOccurs="0"  maxOccurs="unbounded"/>
                <xs:element name="Shared" type="tns:DisableHITRequest"  minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="DisableHITRequest">	  
        <xs:sequence>
            <xs:element name="HITId" type="xs:string" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="DisableHITResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="DisableHITResult" type="tns:DisableHITResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="DisableHITResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <!-- Get HIT -->
    
    <xs:element name="GetHIT">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0" />
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GetHITRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GetHITRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="GetHITRequest">	  
        <xs:sequence>
            <xs:element name="HITId" type="xs:string" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetHITResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Get Reviewable HITs -->

    <xs:simpleType name="GetReviewableHITsSortProperty">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Title" />
            <xs:enumeration value="Reward" />
            <xs:enumeration value="Expiration" />
            <xs:enumeration value="CreationTime" />
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="GetReviewableHITs">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GetReviewableHITsRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GetReviewableHITsRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="GetReviewableHITsRequest">
        <xs:sequence>
            <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
            <xs:element name="SortProperty" type="tns:GetReviewableHITsSortProperty" minOccurs="0"/>
            <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
            <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetReviewableHITsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="GetReviewableHITsResult" type="tns:GetReviewableHITsResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetReviewableHITsResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="PageNumber" type="xs:int" minOccurs="0" />
            <xs:element name="NumResults" type="xs:int" minOccurs="0" />
            <xs:element name="TotalNumResults" type="xs:int" minOccurs="0" />
            <xs:element name="HIT" type="tns:HIT" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Extend HIT -->

    <xs:element name="ExtendHIT">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Request" type="tns:ExtendHITRequest" maxOccurs="unbounded"/>
                <xs:element name="Shared" type="tns:ExtendHITRequest" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="ExtendHITRequest">
        <xs:sequence>
            <xs:element name="HITId" type="xs:string" />
            <xs:element name="MaxAssignmentsIncrement" type="xs:int" minOccurs="0"/>
            <xs:element name="ExpirationIncrementInSeconds" type="xs:long" minOccurs="0"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="ExtendHITResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="ExtendHITResult" type="tns:ExtendHITResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="ExtendHITResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <!-- ASSIGNMENT -->

    <!-- Assignment helper structures -->

    <xs:simpleType name="AssignmentStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Submitted" />
            <xs:enumeration value="Approved" />
            <xs:enumeration value="Rejected" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Assignment">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="AssignmentId" type="xs:string" minOccurs="0" />
            <xs:element name="WorkerId" type="xs:string" minOccurs="0" />
            <xs:element name="HITId" type="xs:string" minOccurs="0" />
            <xs:element name="AssignmentStatus" type="tns:AssignmentStatus" minOccurs="0" />
            <xs:element name="AutoApprovalTime" type="xs:dateTime" minOccurs="0" />
            <xs:element name="AcceptTime" type="xs:dateTime" minOccurs="0" />
            <xs:element name="SubmitTime" type="xs:dateTime" minOccurs="0" />
            <xs:element name="ApprovalTime" type="xs:dateTime" minOccurs="0" />
            <xs:element name="Deadline" type="xs:dateTime" minOccurs="0" />
            <xs:element name="Answer" type="xs:string" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>


    <!-- Approve Assignment -->

    <xs:element name="ApproveAssignment">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:ApproveAssignmentRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:ApproveAssignmentRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="ApproveAssignmentRequest">	  
        <xs:sequence>
            <xs:element name="AssignmentId" type="xs:string" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="ApproveAssignmentResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="ApproveAssignmentResult" type="tns:ApproveAssignmentResult" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="ApproveAssignmentResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Reject Assignment -->

    <xs:element name="RejectAssignment">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:RejectAssignmentRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:RejectAssignmentRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="RejectAssignmentRequest">	  
        <xs:sequence>
            <xs:element name="AssignmentId" type="xs:string" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="RejectAssignmentResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="RejectAssignmentResult" type="tns:RejectAssignmentResult" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="RejectAssignmentResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Get Assignments for HIT -->

    <xs:simpleType name="GetAssignmentsForHITSortProperty">
        <xs:restriction base="xs:string">
          <xs:enumeration value="AcceptTime" />
          <xs:enumeration value="SubmitTime" />
          <xs:enumeration value="Answer" />
          <xs:enumeration value="AssignmentStatus" />
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="GetAssignmentsForHIT">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GetAssignmentsForHITRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GetAssignmentsForHITRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="GetAssignmentsForHITRequest">
        <xs:sequence>
            <xs:element name="HITId" type="xs:string" />
            <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
            <xs:element name="SortProperty" type="tns:GetAssignmentsForHITSortProperty" minOccurs="0"/>
            <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
            <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetAssignmentsForHITResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="GetAssignmentsForHITResult" type="tns:GetAssignmentsForHITResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetAssignmentsForHITResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="PageNumber" type="xs:int" minOccurs="0" />
            <xs:element name="NumResults" type="xs:int" minOccurs="0" />
            <xs:element name="TotalNumResults" type="xs:int" minOccurs="0" />
            <xs:element name="Assignment" type="tns:Assignment" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>


    <!-- QUALIFICATION TYPE -->
    
    <xs:complexType name="QualificationType">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0" />
            <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0" />
            <xs:element name="Name" type="xs:string" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="Keywords" type="xs:string" minOccurs="0" />
            <xs:element name="QualificationTypeStatus" type="tns:QualificationTypeStatus" minOccurs="0"/>
            <xs:element name="Test" type="xs:string" minOccurs="0"/>
            <xs:element name="AnswerKey" type="xs:string" minOccurs="0"/>
            <xs:element name="TestDurationInSeconds" type="xs:long" minOccurs="0"/>
            <xs:element name="RetryDelayInSeconds" type="xs:long" minOccurs="0" />
            <xs:element name="IsRequestable" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="QualificationTypeStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Active" />
            <xs:enumeration value="Inactive" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="QualificationRequest">
        <xs:sequence>
            <xs:element name="QualificationRequestId" type="xs:string"/>
            <xs:element name="QualificationTypeId" type="xs:string"/>
            <xs:element name="Answer" type="xs:string"  minOccurs="0"/>
            <xs:element name="SubmitTime" type="xs:dateTime"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Create QualificationType -->

    <xs:element name="CreateQualificationType">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:CreateQualificationTypeRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:CreateQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="CreateQualificationTypeRequest">	  
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="Keywords" type="xs:string" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0"/>
            <xs:element name="QualificationTypeStatus" type="tns:QualificationTypeStatus" minOccurs="0" />
            <xs:element name="RetryDelayInSeconds" type="xs:long" minOccurs="0" />
            <xs:element name="Test" type="xs:string" minOccurs="0"/>
            <xs:element name="AnswerKey" type="xs:string" minOccurs="0"/>
            <xs:element name="TestDurationInSeconds" type="xs:long" minOccurs="0"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="CreateQualificationTypeResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <!-- Get Qualification Requests -->

    <xs:simpleType name="GetQualificationRequestsSortProperty">
        <xs:restriction base="xs:string">
            <xs:enumeration value="QualificationTypeId"/>
            <xs:enumeration value="SubmitTime"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="GetQualificationRequests">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Request" type="tns:GetQualificationRequestsRequest" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="Shared" type="tns:GetQualificationRequestsRequest"  minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetQualificationRequestsRequest">
        <xs:sequence>
            <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0"/>
            <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
            <xs:element name="SortProperty" type="tns:GetQualificationRequestsSortProperty" minOccurs="0"/>
            <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
            <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetQualificationRequestsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0"/>
                <xs:element name="GetQualificationRequestsResult" type="tns:GetQualificationRequestsResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetQualificationRequestsResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0"/>
            <xs:element name="NumResults" type="xs:int" minOccurs="0"/>
            <xs:element name="TotalNumResults" type="xs:int" minOccurs="0"/>
            <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
            <xs:element name="QualificationRequest" type="tns:QualificationRequest" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>



    <!-- Grant Qualification -->

    <xs:element name="GrantQualification">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GrantQualificationRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GrantQualificationRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="GrantQualificationRequest">	  
        <xs:sequence>
            <xs:element name="QualificationRequestId" type="xs:string" />
            <xs:element name="Value" type="xs:int" minOccurs="0" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GrantQualificationResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="GrantQualificationResult" type="tns:GrantQualificationResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <xs:complexType name="GrantQualificationResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
    
    <!-- Update Qualification -->
	<xs:element name="UpdateQualificationScore">
	    <xs:complexType>
                <xs:sequence>
                    <xs:element name="AWSAccessKeyId" type="xs:string" />
                    <xs:element name="Timestamp" type="xs:dateTime" />
                    <xs:element name="Signature" type="xs:string" />
                    <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                    <xs:element name="Credential" type="xs:string" minOccurs="0" />
                    <xs:element name="Shared" type="tns:UpdateQualificationScoreRequest" minOccurs="0"/>
                    <xs:element name="Request" type="tns:UpdateQualificationScoreRequest" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
	</xs:element>
	
	<xs:complexType name="UpdateQualificationScoreRequest">	  
            <xs:sequence>
                <xs:element name="QualificationTypeId" type="xs:string" />
                <xs:element name="SubjectId" type="xs:string"/>
                <xs:element name="Value" type="xs:int" minOccurs="0" />
                <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    
    <xs:element name="UpdateQualificationScoreResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="UpdateQualificationScoreResult" type="tns:UpdateQualificationScoreResult" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="UpdateQualificationScoreResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <!-- Get QualificationType -->

    <xs:element name="GetQualificationType">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GetQualificationTypeRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GetQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetQualificationTypeRequest">	  
        <xs:sequence>
            <xs:element name="QualificationTypeId" type="xs:string"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetQualificationTypeResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <!-- Get Qualification -->
	<xs:element name="GetQualificationScore">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GetQualificationScoreRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GetQualificationScoreRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetQualificationScoreRequest">	  
        <xs:sequence>
            <xs:element name="QualificationTypeId" type="xs:string"/>
            <xs:element name="SubjectId" type="xs:string"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetQualificationScoreResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="Qualification" type="tns:Qualification" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="Qualification">
	    <xs:sequence>
	        <xs:element ref="tns:Request" minOccurs="0"/>
		    <xs:element name="QualificationTypeId" type="xs:string" minOccurs="0"/>
		    <xs:element name="CreationTime" type="xs:dateTime" minOccurs="0"/>
		    <xs:element name="Value" type="xs:int" minOccurs="0" />
		</xs:sequence>
  </xs:complexType>

    <!-- Search QualificationTypes -->

    <xs:simpleType name="SearchQualificationTypesSortProperty">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Name" />
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="SearchQualificationTypes">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Request" type="tns:SearchQualificationTypesRequest" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="Shared" type="tns:SearchQualificationTypesRequest"  minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="SearchQualificationTypesRequest">
        <xs:sequence>
            <xs:element name="Query" type="xs:string" minOccurs="0"/>
            <xs:element name="MustBeEarnedByCaller" type="xs:boolean" minOccurs="0" />
            <xs:element name="SortDirection" type="tns:SortDirection" minOccurs="0"/>
            <xs:element name="SortProperty" type="tns:SearchQualificationTypesSortProperty" minOccurs="0"/>
            <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
            <xs:element name="PageSize" type="xs:int" minOccurs="0"/>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="MustBeRequestable" type="xs:boolean"/>
        </xs:sequence>
    </xs:complexType>


    <xs:element name="SearchQualificationTypesResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="SearchQualificationTypesResult" type="tns:SearchQualificationTypesResult" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="SearchQualificationTypesResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="NumResults" type="xs:int" minOccurs="0" />
            <xs:element name="TotalNumResults" type="xs:int" minOccurs="0" />
            <xs:element name="PageNumber" type="xs:int" minOccurs="0"/>
            <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Update QualificationType -->

    <xs:element name="UpdateQualificationType">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:UpdateQualificationTypeRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:UpdateQualificationTypeRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="UpdateQualificationTypeRequest">	  
        <xs:sequence>
            <xs:element name="QualificationTypeId" type="xs:string" />
            <xs:element name="Description" type="xs:string" minOccurs="0"/>
            <xs:element name="QualificationTypeStatus" type="tns:QualificationTypeStatus" minOccurs="0" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="UpdateQualificationTypeResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="QualificationType" type="tns:QualificationType" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Account Balance -->

    <xs:element name="GetAccountBalance">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared"  type="tns:GetAccountBalanceRequest" minOccurs="0"/>
                <xs:element name="Request"  type="tns:GetAccountBalanceRequest" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetAccountBalanceRequest">
        <xs:sequence>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="Unused" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetAccountBalanceResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0"/>
                <xs:element name="GetAccountBalanceResult" type="tns:GetAccountBalanceResult" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="GetAccountBalanceResult">
        <xs:sequence>
            <xs:element ref="tns:Request" minOccurs="0" />
            <xs:element name="AvailableBalance" type="tns:Price" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <!-- GetRequesterStatistic --> 

    <xs:element name="GetRequesterStatistic">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" />
                <xs:element name="Timestamp" type="xs:dateTime" />
                <xs:element name="Signature" type="xs:string" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Credential" type="xs:string" minOccurs="0" />
                <xs:element name="Shared" type="tns:GetRequesterStatisticRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:GetRequesterStatisticRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="GetRequesterStatisticRequest">
        <xs:sequence>
            <xs:element name="Statistic" type="tns:RequesterStatistic"/>
            <xs:element name="TimePeriod" type="tns:TimePeriod" minOccurs="0"/>
            <xs:element name="Count" type="xs:int" minOccurs="0" />
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="GetRequesterStatisticResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0" />
                <xs:element name="GetStatisticResult" type="tns:GetStatisticResult" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:simpleType name="RequesterStatistic">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NumberHITsAssignable"/>
            <xs:enumeration value="NumberHITsReviewable"/>
            <xs:enumeration value="NumberHITsCreated"/>
            <xs:enumeration value="NumberHITsCompleted"/>
            <xs:enumeration value="TotalRewardPayout"/>
            <xs:enumeration value="TotalFeePayout"/>
            <xs:enumeration value="TotalRewardAndFeePayout"/>
            <xs:enumeration value="EstimatedFeeLiability"/>
            <xs:enumeration value="EstimatedRewardLiability"/>
            <xs:enumeration value="EstimatedTotalLiability"/>
            <xs:enumeration value="NumberAssignmentsAvailable"/>
            <xs:enumeration value="NumberAssignmentsAccepted"/>
            <xs:enumeration value="NumberAssignmentsPending"/>
            <xs:enumeration value="NumberAssignmentsApproved"/>
            <xs:enumeration value="NumberAssignmentsRejected"/>
            <xs:enumeration value="NumberAssignmentsReturned"/>
            <xs:enumeration value="NumberAssignmentsAbandoned"/>
            <xs:enumeration value="AverageRewardAmount"/>
            <xs:enumeration value="PercentAssignmentsApproved"/>
            <xs:enumeration value="PercentAssignmentsRejected"/>
        </xs:restriction>
    </xs:simpleType>

  <!-- Notify Workers -->
  
   <xs:element name="NotifyWorkers">
     <xs:complexType>
       <xs:sequence>
	 <xs:element name="AWSAccessKeyId" type="xs:string" />
       <xs:element name="Timestamp" type="xs:dateTime" />
       <xs:element name="Signature" type="xs:string" />
	   <xs:element name="Validate" type="xs:string" minOccurs="0"/>
	   <xs:element name="Credential" type="xs:string" minOccurs="0" />
	   <xs:element name="Shared" type="tns:NotifyWorkersRequest" minOccurs="0" />
	   <xs:element name="Request" type="tns:NotifyWorkersRequest" maxOccurs="unbounded"/>
	 </xs:sequence>
     </xs:complexType>
   </xs:element>
  
   <xs:complexType name="NotifyWorkersRequest">
     <xs:sequence>
       <xs:element name="Subject" type="xs:string" minOccurs="0" />
       <xs:element name="MessageText" type="xs:string" />
       <xs:element name="WorkerId" type="xs:string" maxOccurs="100" />
       <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:complexType>

   <xs:element name="NotifyWorkersResponse">
     <xs:complexType>
       <xs:sequence>
	 <xs:element ref="tns:OperationRequest" minOccurs="0" />
	 <xs:element name="NotifyWorkersResult" type="tns:NotifyWorkersResult" minOccurs="0" maxOccurs="unbounded" />	
       </xs:sequence>
     </xs:complexType>
   </xs:element>
  
   <xs:complexType name="NotifyWorkersResult">
     <xs:sequence>
       <xs:element ref="tns:Request" minOccurs="0" />
     </xs:sequence>
   </xs:complexType>
  
    <!-- Statistic helper structures --> 

    <xs:complexType name="GetStatisticResult">
        <xs:sequence>
	<xs:element ref="tns:Request" minOccurs="0" />
        	<xs:element name="DataPoint" type="tns:DataPoint" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="DataPoint">
        <xs:sequence>
            <xs:element name="Date" type="xs:dateTime"/>
            <xs:element name="LongValue" type="xs:long" minOccurs="0"/>
            <xs:element name="DoubleValue" type="xs:double" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="TimePeriod">
        <xs:restriction base="xs:string">
            <xs:enumeration value="OneDay"/>
            <xs:enumeration value="SevenDays"/>
            <xs:enumeration value="ThirtyDays"/>
            <xs:enumeration value="LifeToDate"/>
        </xs:restriction>
    </xs:simpleType>

    <!--  Help and related structures -->

    <xs:element name="OperationRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:HTTPHeaders" minOccurs="0"/>
                <xs:element name="RequestId" type="xs:string" minOccurs="0"/>
                <xs:element ref="tns:Arguments" minOccurs="0"/>
                <xs:element ref="tns:Errors" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="IsValid" type="xs:string" minOccurs="0"/>
                <xs:element name="CreateHITRequest" type="tns:CreateHITRequest" minOccurs="0"/>
                <xs:element name="DisposeHITRequest" type="tns:DisposeHITRequest" minOccurs="0" />
                <xs:element name="DisableHITRequest" type="tns:DisableHITRequest" minOccurs="0"/>
                <xs:element name="GetHITRequest" type="tns:GetHITRequest" minOccurs="0"/>
                <xs:element name="GetReviewableHITsRequest" type="tns:GetReviewableHITsRequest" minOccurs="0"/>
                <xs:element name="ExtendHITRequest" type="tns:ExtendHITRequest" minOccurs="0" />
                <xs:element name="CreateQualificationTypeRequest" type="tns:CreateQualificationTypeRequest" minOccurs="0"/>
                <xs:element name="GrantQualificationRequest" type="tns:GrantQualificationRequest" minOccurs="0"/>
                <xs:element name="GetQualificationTypeRequest" type="tns:GetQualificationTypeRequest" minOccurs="0"/>
                <xs:element name="SearchQualificationTypesRequest" type="tns:SearchQualificationTypesRequest" minOccurs="0"/>
                <xs:element name="UpdateQualificationTypeRequest" type="tns:UpdateQualificationTypeRequest" minOccurs="0"/>
                <xs:element name="ApproveAssignmentRequest" type="tns:ApproveAssignmentRequest" minOccurs="0"/>
                <xs:element name="RejectAssignmentRequest" type="tns:RejectAssignmentRequest" minOccurs="0"/>
                <xs:element name="GetAssignmentsForHIT" type="tns:GetAssignmentsForHITRequest" minOccurs="0"/>
                <xs:element name="GetAccountBalanceRequest" type="tns:GetAccountBalanceRequest" minOccurs="0"/>
                <xs:element name="NotifyWorkersRequest" type="tns:NotifyWorkersRequest" minOccurs="0"/>
                <xs:element name="HelpRequest" type="tns:HelpRequest" minOccurs="0"/>
                <xs:element ref="tns:Errors" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- Standard AWS Platform types -->
    
    <xs:element name="HTTPHeaders">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:attribute name="Name" type="xs:string" use="required"/>
                        <xs:attribute name="Value" type="xs:string" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="Arguments">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Argument" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:attribute name="Name" type="xs:string" use="required"/>
                        <xs:attribute name="Value" type="xs:string" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="KeyValuePair">
        <xs:sequence>
            <xs:element name="Key" type="xs:string"/>
            <xs:element name="Value" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:element name="Errors">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Error" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Code" type="xs:string"/>
                            <xs:element name="Message" type="xs:string"/>
                            <xs:element name="Data" type="tns:KeyValuePair" minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="Help">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>
                <xs:element name="Timestamp" type="xs:dateTime" minOccurs="0" />
                <xs:element name="Signature" type="xs:string" minOccurs="0" />
                <xs:element name="Validate" type="xs:string" minOccurs="0"/>
                <xs:element name="Shared" type="tns:HelpRequest" minOccurs="0"/>
                <xs:element name="Request" type="tns:HelpRequest" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="HelpRequest">
        <xs:sequence>
            <xs:element name="About" type="xs:string" maxOccurs="unbounded"/>
            <xs:element name="HelpType" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Operation"/>
                        <xs:enumeration value="ResponseGroup"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ResponseGroup" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:element name="HelpResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:OperationRequest" minOccurs="0"/>
                <xs:element ref="tns:Information" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="Information">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tns:Request" minOccurs="0"/>
                <xs:element ref="tns:OperationInformation" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element ref="tns:ResponseGroupInformation" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="OperationInformation">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Name" type="xs:string" minOccurs="0"/>
                <xs:element name="Description" type="xs:string" minOccurs="0"/>
                <xs:element name="RequiredParameters" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="AvailableParameters" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="DefaultResponseGroups" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="AvailableResponseGroups" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="ResponseGroup" type="xs:string" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="ResponseGroupInformation">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Name" type="xs:string" minOccurs="0"/>
                <xs:element name="CreationDate" type="xs:string" minOccurs="0"/>
                <xs:element name="ValidOperations" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Operation" type="xs:string" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Elements" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Element" type="xs:string" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

