<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions targetNamespace="http://queue.amazonaws.com/doc/2009-02-01/" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:wsa="http://www.w3.org/2005/08/addressing" 
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
  xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
  xmlns:tns="http://queue.amazonaws.com/doc/2009-02-01/">
    
  <wsp:Policy wsu:Id="CertificateOverTransportPolicy">
    <wsp:ExactlyOne>
      <wsp:All>
	<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
	  <wsp:Policy>
	    <sp:TransportToken>
	      <wsp:Policy>
	        <sp:HttpsToken RequireClientCertificate="false"/>
	      </wsp:Policy>
	    </sp:TransportToken>
	    <sp:AlgorithmSuite>
	      <wsp:Policy>
	        <sp:Basic256/>
	      </wsp:Policy>
	    </sp:AlgorithmSuite>
	    <sp:Layout>
	      <wsp:Policy>
	        <sp:Lax/>
	      </wsp:Policy>
	    </sp:Layout>
	    <sp:IncludeTimestamp/>
	  </wsp:Policy>
	</sp:TransportBinding>
	<sp:EndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
	  <wsp:Policy>
	    <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
	      <wsp:Policy>
	        <sp:RequireThumbprintReference />
	        <sp:WssX509V3Token10 />
	      </wsp:Policy>
	    </sp:X509Token>
	  </wsp:Policy>
	</sp:EndorsingSupportingTokens>
	<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
          <wsp:Policy>
            <sp:MustSupportRefKeyIdentifier />
	    <sp:MustSupportRefIssuerSerial />
	  </wsp:Policy>
	</sp:Wss10>
        <wsap:UsingAddressing/>
      </wsp:All>
    </wsp:ExactlyOne>
  </wsp:Policy>
  
  <wsdl:types>
    <xs:schema xmlns:tns="http://queue.amazonaws.com/doc/2009-02-01/"
    	targetNamespace="http://queue.amazonaws.com/doc/2009-02-01/" 
    	elementFormDefault="qualified">
      
  <!-- **************************** QueueService Interface *************************** -->
  
  <!-- CreateQueue Action -->
  <xs:element name="CreateQueue">
    <xs:annotation>
      <xs:documentation xml:lang="en">
The CreateQueue action creates a new queue, or returns the URL of an existing one.  When you request CreateQueue, you provide a name for the queue. To successfully create a new queue, you must provide a name that is unique within the scope of your own queues. If you provide the name of an existing queue, a new queue isn't created and an error isn't returned. Instead, the request succeeds and the queue URL for the existing queue is returned. Exception: if you provide a value for DefaultVisibilityTimeout that is different from the value for the existing queue, you receive an error.  
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="QueueName" type="xs:string"/>
        <xs:element name="DefaultVisibilityTimeout" type="xs:integer" minOccurs="0"/>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- CreateQueue Action Response -->
  <xs:element name="CreateQueueResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:CreateQueueResult"/>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- ListQueues Action -->
  <xs:element name="ListQueues">
    <xs:annotation>
      <xs:documentation xml:lang="en">
The ListQueues action returns a list of your queues.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="QueueNamePrefix" type="xs:string" minOccurs="0"/>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- ListQueues Action Response -->
  <xs:element name="ListQueuesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ListQueuesResult"/>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- **************************** MessageQueue Interface *************************** -->
                  
  <!-- ChangeMessageVisibility Action -->
  <xs:element name="ChangeMessageVisibility">
    <xs:annotation>
      <xs:documentation xml:lang="en">
The ChangeMessageVisibility action extends the read lock timeout of the specified message from the specified queue to the specified value.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ReceiptHandle" type="xs:string"/>
        <xs:element name="VisibilityTimeout" type="xs:integer"/>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- ChangeMessageVisibility Action Response -->
  <xs:element name="ChangeMessageVisibilityResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <!-- DeleteMessage Action -->
  <xs:element name="DeleteMessage">
    <xs:annotation>
      <xs:documentation xml:lang="en">
The DeleteMessage action unconditionally removes the specified message from the specified queue. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue.  Upto 10 handles can be submitted per request.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ReceiptHandle" type="xs:string" maxOccurs="unbounded"/>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- DeleteMessage Action Response -->
  <xs:element name="DeleteMessageResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>  

  <!-- DeleteQueue Action -->
  <xs:element name="DeleteQueue">
    <xs:annotation>
      <xs:documentation xml:lang="en">
This action unconditionally deletes the queue specified by the queue URL. Use this operation WITH CARE!  The queue is deleted even if it is NOT empty.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>      
  </xs:element>
                    
  <!-- DeleteQueue Action Response -->
  <xs:element name="DeleteQueueResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- GetQueueAttributes Action -->
  <xs:element name="GetQueueAttributes">
    <xs:annotation>
      <xs:documentation xml:lang="en">
Gets one or all attributes of a queue. Current attributes you can get: [ApproximateNumberOfMessages, ApproximateNumberOfMessagesNotVisible, CreatedTimestamp, LastModifiedTimestamp, VisibilityTimeout, Policy, MaximumMessageSize, and MessageRetentionPeriod].
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AttributeName" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        <!-- Ignore the Unused element.  It prevents WSE from collapsing AttributeName element(s) to an array of strings. --> 
        <xs:element name="Unused" type="xs:string" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- GetQueueAttributes Action Response -->
  <xs:element name="GetQueueAttributesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:GetQueueAttributesResult"/>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- ReceiveMessage Action -->
  <xs:element name="ReceiveMessage">
    <xs:annotation>
      <xs:documentation xml:lang="en">
Retrieves one or more messages from the specified queue, including the message body and message ID of each message. Messages returned by this action stay in the queue until you delete them. However, once a message is returned to a ReceiveMessage request, it is not returned on subsequent ReceiveMessage requests for the duration of the VisibilityTimeout. If you do not specify a VisibilityTimeout in the request, the overall visibility timeout for the queue is used for the returned messages.  Possible attributes that can be requested with messages include [SenderId, SentTimestamp, ApproximateReceiveCount, and ApproximateFirstReceiveTimestamp]
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MaxNumberOfMessages" type="xs:integer" minOccurs="0"/>
        <xs:element name="VisibilityTimeout" type="xs:integer" minOccurs="0"/>
        <xs:element name="AttributeName" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        <!-- Ignore the Unused element.  It prevents WSE from collapsing AttributeName element(s) to an array of strings. --> 
        <xs:element name="Unused" type="xs:string" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- ReceiveMessage Action Response -->
  <xs:element name="ReceiveMessageResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ReceiveMessageResult"/>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>                

  <!-- SendMessage Action -->
  <xs:element name="SendMessage">
    <xs:annotation>
      <xs:documentation xml:lang="en">
The SendMessage action delivers a message to the specified queue.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MessageBody" type="xs:string"/>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- SendMessage Action Response -->
  <xs:element name="SendMessageResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:SendMessageResult"/>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- SetQueueAttributes Action -->
  <xs:element name="SetQueueAttributes">
    <xs:annotation>
      <xs:documentation xml:lang="en">
Sets the attributes (configuration) of a queue. Valid attributes that can be set are [VisibilityTimeout, Policy, MaximumMessageSize, and MessageRetentionPeriod].
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:Attribute" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- SetQueueAttributes Action Response -->
  <xs:element name="SetQueueAttributesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- **************************** MessageQueue Permissions Interface *************************** -->

  <!-- AddPermission Action -->
  <xs:element name="AddPermission">
    <xs:annotation>
      <xs:documentation xml:lang="en">
Adds the specified permission(s) to a queue for the specified principal(s). This allows for sharing access to the queue. 
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Label" type="xs:string"/>
        <xs:element name="AWSAccountId" type="xs:string" maxOccurs="unbounded"/>
        <xs:element name="ActionName" type="xs:string" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- AddPermission Action Response -->
  <xs:element name="AddPermissionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
    
  <!-- RemovePermission Action -->
  <xs:element name="RemovePermission">
    <xs:annotation>
      <xs:documentation xml:lang="en">
Removes the permission with the specified statement id from the queue. 
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Label" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                    
  <!-- RemovePermission Action Response -->
  <xs:element name="RemovePermissionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:ResponseMetadata"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <!-- ******************************* QueueService Types ************************* -->
                
  <!-- CreateQueue Result Data -->
  <xs:element name="CreateQueueResult">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="QueueUrl" type="xs:anyURI"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- ListQueues Result Data -->
  <xs:element name="ListQueuesResult">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="QueueUrl" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
   
  <!-- ******************************* MessageQueue Types ************************* -->
  
  <!-- Attribute Data -->
  <xs:element name="Attribute">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name" type="xs:string"/>
        <xs:element name="Value" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- GetQueueAttributes Result Data -->
  <xs:element name="GetQueueAttributesResult">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:Attribute" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- ReceiveMessage Data -->
  <xs:element name="Message">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MessageId" type="xs:string"/>
        <xs:element name="ReceiptHandle" type="xs:string"/>
        <xs:element name="MD5OfBody" type="xs:string"/>
        <xs:element name="Body" type="xs:string"/>
        <xs:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- ReceiveMessage Result Data -->
  <xs:element name="ReceiveMessageResult">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:Message" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                
  <!-- SendMessage Result Data -->
  <xs:element name="SendMessageResult">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MessageId" type="xs:string"/>
        <xs:element name="MD5OfMessageBody" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- ******************************** AWS Types *********************************** -->
                
  <xs:element name="ResponseMetadata">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="RequestId" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
                
  <!-- // Query and REST Error Response // -->
  <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="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 namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:anyAttribute namespace="##other" processContents="lax"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

  </wsdl:types>
  
  <!-- ******************************** Messages ********************************* -->

  <wsdl:message name="CreateQueueRequestMsg">
    <wsdl:part name="body" element="tns:CreateQueue"/>
  </wsdl:message>
  <wsdl:message name="CreateQueueResponseMsg">
    <wsdl:part name="body" element="tns:CreateQueueResponse"/>
  </wsdl:message>
  
  <wsdl:message name="ListQueuesRequestMsg">
    <wsdl:part name="body" element="tns:ListQueues"/>
  </wsdl:message>
  <wsdl:message name="ListQueuesResponseMsg">
    <wsdl:part name="body" element="tns:ListQueuesResponse"/>
  </wsdl:message>
        
  <wsdl:message name="AddPermissionRequestMsg">
    <wsdl:part name="body" element="tns:AddPermission"/>
  </wsdl:message>
  <wsdl:message name="AddPermissionResponseMsg">
    <wsdl:part name="body" element="tns:AddPermissionResponse"/>
  </wsdl:message>
        
  <wsdl:message name="ChangeMessageVisibilityRequestMsg">
    <wsdl:part name="body" element="tns:ChangeMessageVisibility"/>
  </wsdl:message>
  <wsdl:message name="ChangeMessageVisibilityResponseMsg">
    <wsdl:part name="body" element="tns:ChangeMessageVisibilityResponse"/>
  </wsdl:message>
  
  <wsdl:message name="DeleteMessageRequestMsg">
    <wsdl:part name="body" element="tns:DeleteMessage"/>
  </wsdl:message>
  <wsdl:message name="DeleteMessageResponseMsg">
    <wsdl:part name="body" element="tns:DeleteMessageResponse"/>
  </wsdl:message>
              
  <wsdl:message name="DeleteQueueRequestMsg">
    <wsdl:part name="body" element="tns:DeleteQueue"/>
  </wsdl:message>
  <wsdl:message name="DeleteQueueResponseMsg">
    <wsdl:part name="body" element="tns:DeleteQueueResponse"/>
  </wsdl:message>
        
  <wsdl:message name="GetQueueAttributesRequestMsg">
    <wsdl:part name="body" element="tns:GetQueueAttributes"/>
  </wsdl:message>
  <wsdl:message name="GetQueueAttributesResponseMsg">
    <wsdl:part name="body" element="tns:GetQueueAttributesResponse"/>
  </wsdl:message>
        
  <wsdl:message name="RemovePermissionRequestMsg">
    <wsdl:part name="body" element="tns:RemovePermission"/>
  </wsdl:message>
  <wsdl:message name="RemovePermissionResponseMsg">
    <wsdl:part name="body" element="tns:RemovePermissionResponse"/>
  </wsdl:message>
        
  <wsdl:message name="ReceiveMessageRequestMsg">
    <wsdl:part name="body" element="tns:ReceiveMessage"/>
  </wsdl:message>
  <wsdl:message name="ReceiveMessageResponseMsg">
    <wsdl:part name="body" element="tns:ReceiveMessageResponse"/>
  </wsdl:message>      
        
  <wsdl:message name="SendMessageRequestMsg">
    <wsdl:part name="body" element="tns:SendMessage"/>
  </wsdl:message>
  <wsdl:message name="SendMessageResponseMsg">
    <wsdl:part name="body" element="tns:SendMessageResponse"/>
  </wsdl:message>     
  
  <wsdl:message name="SetQueueAttributesRequestMsg">
    <wsdl:part name="body" element="tns:SetQueueAttributes"/>
  </wsdl:message>
  <wsdl:message name="SetQueueAttributesResponseMsg">
    <wsdl:part name="body" element="tns:SetQueueAttributesResponse"/>
  </wsdl:message>

  <!-- ********************************* Ports *********************************** -->

  <wsdl:portType name="QueueServicePortType">
           
    <wsdl:operation name="CreateQueue">
      <wsdl:documentation> 
The CreateQueue action creates a new queue, or returns the URL of an existing one.  When you request CreateQueue, you provide a name for the queue. To successfully create a new queue, you must provide a name that is unique within the scope of your own queues. If you provide the name of an existing queue, a new queue isn't created and an error isn't returned. Instead, the request succeeds and the queue URL for the existing queue is returned. Exception: if you provide a value for DefaultVisibilityTimeout that is different from the value for the existing queue, you receive an error.      </wsdl:documentation>
      <wsdl:input message="tns:CreateQueueRequestMsg" wsa:Action="urn:CreateQueue"/>
      <wsdl:output message="tns:CreateQueueResponseMsg" wsa:Action="urn:CreateQueue:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="ListQueues">
      <wsdl:documentation> 
The ListQueues action returns a list of your queues.
      </wsdl:documentation>
      <wsdl:input message="tns:ListQueuesRequestMsg" wsa:Action="urn:ListQueues"/>
      <wsdl:output message="tns:ListQueuesResponseMsg" wsa:Action="urn:ListQueues:Response"/>
    </wsdl:operation>
              
  </wsdl:portType>

  <wsdl:portType name="MessageQueuePortType">
            
    <wsdl:operation name="AddPermission">
      <wsdl:documentation> 
Adds the specified permission(s) to a queue for the specified principal(s). This allows for sharing access to the queue.
      </wsdl:documentation>
      <wsdl:input message="tns:AddPermissionRequestMsg" wsa:Action="urn:AddPermission"/>
      <wsdl:output message="tns:AddPermissionResponseMsg" wsa:Action="urn:AddPermission:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="ChangeMessageVisibility">
      <wsdl:documentation>
The ChangeMessageVisibility action extends the read lock timeout of the specified message from the specified queue to the specified value.
      </wsdl:documentation>
      <wsdl:input message="tns:ChangeMessageVisibilityRequestMsg" wsa:Action="urn:ChangeMessageVisibility"/>
      <wsdl:output message="tns:ChangeMessageVisibilityResponseMsg" wsa:Action="urn:ChangeMessageVisibility:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="DeleteMessage">
      <wsdl:documentation>
The DeleteMessage action unconditionally removes the specified message from the specified queue. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue.
      </wsdl:documentation>
      <wsdl:input message="tns:DeleteMessageRequestMsg" wsa:Action="urn:DeleteMessage"/>
      <wsdl:output message="tns:DeleteMessageResponseMsg" wsa:Action="urn:DeleteMessage:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="DeleteQueue">
      <wsdl:documentation> 
This action unconditionally deletes the queue specified by the queue URL. Use this operation WITH CARE!  The queue is deleted even if it is NOT empty.
      </wsdl:documentation>
      <wsdl:input message="tns:DeleteQueueRequestMsg" wsa:Action="urn:DeleteQueue"/>
      <wsdl:output message="tns:DeleteQueueResponseMsg" wsa:Action="urn:DeleteQueue:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="GetQueueAttributes">
      <wsdl:documentation> 
Gets one or all attributes of a queue. Queues currently have two attributes you can get: ApproximateNumberOfMessages and VisibilityTimeout.
      </wsdl:documentation>
      <wsdl:input message="tns:GetQueueAttributesRequestMsg" wsa:Action="urn:GetQueueAttributes"/>
      <wsdl:output message="tns:GetQueueAttributesResponseMsg" wsa:Action="urn:GetQueueAttributes:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="RemovePermission">
      <wsdl:documentation> 
Removes the permission with the specified statement id from the queue. 
      </wsdl:documentation>
      <wsdl:input message="tns:RemovePermissionRequestMsg" wsa:Action="urn:RemovePermission"/>
      <wsdl:output message="tns:RemovePermissionResponseMsg" wsa:Action="urn:RemovePermission:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="ReceiveMessage">
      <wsdl:documentation> 
Retrieves one or more messages from the specified queue.  For each message returned, the response includes the message body; MD5 digest of the message body; receipt handle, which is the identifier you must provide when deleting the message; and message ID of each message. Messages returned by this action stay in the queue until you delete them. However, once a message is returned to a ReceiveMessage request, it is not returned on subsequent ReceiveMessage requests for the duration of the VisibilityTimeout. If you do not specify a VisibilityTimeout in the request, the overall visibility timeout for the queue is used for the returned messages.
      </wsdl:documentation>
      <wsdl:input message="tns:ReceiveMessageRequestMsg" wsa:Action="urn:ReceiveMessage"/>
      <wsdl:output message="tns:ReceiveMessageResponseMsg" wsa:Action="urn:ReceiveMessage:Response"/>
    </wsdl:operation>
            
    <wsdl:operation name="SendMessage">
      <wsdl:documentation>
The SendMessage action delivers a message to the specified queue.
      </wsdl:documentation>
      <wsdl:input message="tns:SendMessageRequestMsg" wsa:Action="urn:SendMessage"/>
      <wsdl:output message="tns:SendMessageResponseMsg" wsa:Action="urn:SendMessage:Response"/>
    </wsdl:operation>

    <wsdl:operation name="SetQueueAttributes">
      <wsdl:documentation> 
Sets an attribute of a queue. Currently, you can set only the VisibilityTimeout attribute for a queue. 
      </wsdl:documentation>
      <wsdl:input message="tns:SetQueueAttributesRequestMsg" wsa:Action="urn:SetQueueAttributes"/>         
      <wsdl:output message="tns:SetQueueAttributesResponseMsg" wsa:Action="urn:SetQueueAttributes:Response"/>
    </wsdl:operation>

  </wsdl:portType>
            
  <!-- ******************************** Bindings ********************************** -->

  <wsdl:binding name="QueueServiceBinding" type="tns:QueueServicePortType">

    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    
    <wsdl:operation name="CreateQueue">
      <soap:operation soapAction="CreateQueue"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="ListQueues">
      <soap:operation soapAction="ListQueues"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    
  </wsdl:binding>

  <wsdl:binding name="QueueServiceHttpsBinding" type="tns:QueueServicePortType">
            
    <wsp:PolicyReference URI="#CertificateOverTransportPolicy"/>
            
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
            
    <wsdl:operation name="CreateQueue">
      <soap:operation soapAction="CreateQueue"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>                
            
    <wsdl:operation name="ListQueues">
      <soap:operation soapAction="ListQueues"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>            
     
  </wsdl:binding>  

  <wsdl:binding name="MessageQueueBinding" type="tns:MessageQueuePortType">

    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    
    <wsdl:operation name="AddPermission">
      <soap:operation soapAction="AddPermission"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>  
            
    <wsdl:operation name="ChangeMessageVisibility">
      <soap:operation soapAction="ChangeMessageVisibility"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>  
            
    <wsdl:operation name="DeleteMessage">
      <soap:operation soapAction="DeleteMessage"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>            
            
    <wsdl:operation name="DeleteQueue">
      <soap:operation soapAction="DeleteQueue"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
            
    <wsdl:operation name="GetQueueAttributes">
      <soap:operation soapAction="GetQueueAttributes"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    
    <wsdl:operation name="RemovePermission">
      <soap:operation soapAction="RemovePermission"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>      
            
    <wsdl:operation name="ReceiveMessage">
      <soap:operation soapAction="ReceiveMessage"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
                        
    <wsdl:operation name="SendMessage">
      <soap:operation soapAction="SendMessage"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
                        
    <wsdl:operation name="SetQueueAttributes">
      <soap:operation soapAction="SetQueueAttributes"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>            
              
  </wsdl:binding>

  <wsdl:binding name="MessageQueueHttpsBinding" type="tns:MessageQueuePortType">

    <wsp:PolicyReference URI="#CertificateOverTransportPolicy"/>
            
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    
    <wsdl:operation name="AddPermission">
      <soap:operation soapAction="AddPermission"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>  
            
    <wsdl:operation name="ChangeMessageVisibility">
      <soap:operation soapAction="ChangeMessageVisibility"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>  
            
    <wsdl:operation name="DeleteMessage">
      <soap:operation soapAction="DeleteMessage"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>            
            
    <wsdl:operation name="DeleteQueue">
      <soap:operation soapAction="DeleteQueue"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
            
    <wsdl:operation name="GetQueueAttributes">
      <soap:operation soapAction="GetQueueAttributes"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    
    <wsdl:operation name="RemovePermission">
      <soap:operation soapAction="RemovePermission"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation> 
            
    <wsdl:operation name="ReceiveMessage">
      <soap:operation soapAction="ReceiveMessage"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
                        
    <wsdl:operation name="SendMessage">
      <soap:operation soapAction="SendMessage"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
                        
    <wsdl:operation name="SetQueueAttributes">
      <soap:operation soapAction="SetQueueAttributes"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>            
              
  </wsdl:binding>
  
  <!-- ******************************** Service ********************************** -->
        
  <wsdl:service name="QueueService">
    <wsdl:documentation> 
Amazon Simple Queue Service (Amazon SQS) offers a reliable, highly scalable hosted queue for storing messages as they travel between computers. By using Amazon SQS, developers can simply move data between distributed application components performing different tasks, without losing messages or requiring each component to be always available.  Amazon SQS works by exposing Amazon's web-scale messaging infrastructure as a web service. Any computer on the Internet can add or read messages without any installed software or special firewall configurations. Components of applications using Amazon SQS can run independently, and do not need to be on the same network, developed with the same technologies, or running at the same time.
    </wsdl:documentation>
    <wsdl:port name="QueueServicePort" binding="tns:QueueServiceBinding">
      <soap:address location="http://queue.amazonaws.com"/>
    </wsdl:port>
    <wsdl:port name="QueueServiceHttpsPort" binding="tns:QueueServiceHttpsBinding">
      <soap:address location="https://queue.amazonaws.com"/>
    </wsdl:port>
  </wsdl:service>

  <wsdl:service name="MessageQueue">
    <wsdl:documentation> 
Amazon Simple Queue Service (Amazon SQS) offers a reliable, highly scalable hosted queue for storing messages as they travel between computers. By using Amazon SQS, developers can simply move data between distributed application components performing different tasks, without losing messages or requiring each component to be always available.  Amazon SQS works by exposing Amazon's web-scale messaging infrastructure as a web service. Any computer on the Internet can add or read messages without any installed software or special firewall configurations. Components of applications using Amazon SQS can run independently, and do not need to be on the same network, developed with the same technologies, or running at the same time.
    </wsdl:documentation>
    <wsdl:port name="MessageQueuePort" binding="tns:MessageQueueBinding">
      <soap:address location="http://queue.amazonaws.com"/>
    </wsdl:port>
    <wsdl:port name="MessageQueueHttpsPort" binding="tns:MessageQueueHttpsBinding">
      <soap:address location="https://queue.amazonaws.com"/>
    </wsdl:port>
  </wsdl:service>

</wsdl:definitions>
