<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions targetNamespace="http://queue.amazonaws.com/doc/2008-01-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/2008-01-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 
      targetNamespace="http://queue.amazonaws.com/doc/2008-01-01/"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:tns="http://queue.amazonaws.com/doc/2008-01-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: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: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 *************************** -->
                
      <!-- 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.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ReceiptHandle" type="xs:string"/>
          </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: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. Queues currently have two attributes you can get: ApproximateNumberOfMessages and VisibilityTimeout.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AttributeName" type="xs:string" 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.
          </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: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: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 an attribute of a queue. Currently, you can set only the VisibilityTimeout attribute for a queue. 
          </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>

      <!-- ******************************* 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: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="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="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="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="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="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="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="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="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>
