<?xml version="1.0"?>

<!-- WSDL description of the SARA Grid Services Web API's -->

  <!-- targetNamespace="http://mu7.matrix.sara.nl/services/SaraGridService.wsdl"  -->
<definitions name="SaraGrid" 
  targetNamespace="urn:SaraGrid"
  xmlns:typens="urn:SaraGrid"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
                targetNamespace="urn:SaraGrid">

      <xsd:complexType name="FileElement">
        <xsd:all>
          <xsd:element name="name" type="xsd:string"/>
          <xsd:element name="data" type="xsd:string"/>
        </xsd:all>
      </xsd:complexType>

      <xsd:complexType name="FileElementArray">
        <xsd:complexContent>
          <xsd:restriction base="soapenc:Array">
            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:FileElement[]"/>
          </xsd:restriction>
        </xsd:complexContent>
      </xsd:complexType>

      <xsd:complexType name="Job">
        <xsd:all>
          <xsd:element name="files"             type="typens:FileElementArray"/>
          <xsd:element name="jdl"               type="xsd:string"/>
          <xsd:element name="vo"                type="xsd:string"/>
          <xsd:element name="ce"                type="xsd:string"/>
        </xsd:all>
      </xsd:complexType>

      <xsd:complexType name="Result">
        <xsd:all>
          <xsd:element name="status"            type="xsd:string"/>
          <xsd:element name="value"             type="xsd:string"/>
        </xsd:all>
      </xsd:complexType>

      <xsd:complexType name="OutputResult">
        <xsd:all>
          <xsd:element name="status"            type="xsd:string"/>
          <xsd:element name="value"             type="xsd:string"/>
          <xsd:element name="files"             type="typens:FileElementArray"/>
        </xsd:all>
      </xsd:complexType>
    </xsd:schema>
  </types>

  <message name="getVersion">
  </message>
  
  <message name="getVersionResponse">
    <part name="return" type="xsd:string"/>
  </message>

  <message name="getJobSubmit">
    <part name="identity" type="xsd:string"/>
    <part name="job" type="typens:Job"/>
  </message>

  <message name="getJobInfo">
    <part name="identity" type="xsd:string"/>
    <part name="job_id" type="xsd:string"/>
  </message>

  <message name="getProxy">
    <part name="proxy" type="xsd:string">
      <documentation>Certificate proxy</documentation>     
    </part>
  </message>

  <message name="getIdentity">
    <part name="identity" type="xsd:string"/>
  </message>

  <message name="getResult">
    <part name="result" type="typens:Result"/>
  </message>

  <message name="getOutputResult">
    <part name="result" type="typens:OutputResult"/>
  </message>

  <portType name="SaraGridPort">
    <operation name="get_version">
      <input message="typens:getVersion"/>
      <output message="typens:getVersionResponse"/>
    </operation>

    <operation name="job_submit">
      <input message="typens:getJobSubmit"/>
      <output message="typens:getResult"/>
    </operation>

    <operation name="job_list_match">
      <input message="typens:getJobSubmit"/>
      <output message="typens:getResult"/>
    </operation>

    <operation name="job_list">
      <input message="typens:getIdentity"/>
      <output message="typens:getResult"/>
    </operation>

    <operation name="job_status">
      <input message="typens:getJobInfo"/>
      <output message="typens:getResult"/>
    </operation>

    <operation name="job_cancel">
      <input message="typens:getJobInfo"/>
      <output message="typens:getResult"/>
    </operation>
    
    <operation name="job_get_output">
      <input message="typens:getJobInfo"/>
      <output message="typens:getOutputResult"/>
    </operation>

    <operation name="proxy_init">
      <input message="typens:getProxy"/>
      <output message="typens:getResult"/>
    </operation>

    <operation name="proxy_info">
      <input message="typens:getIdentity"/>
      <output message="typens:getResult"/>
    </operation>

    <operation name="proxy_destroy">
      <input message="typens:getIdentity"/>
      <output message="typens:getResult"/>
    </operation>
  </portType>

  <binding name="SaraGridBinding" type="typens:SaraGridPort">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

    <operation name="get_version">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="job_submit">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="job_status">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="job_cancel">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="job_list">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>
        
    <operation name="job_list_match">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="job_get_output">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="proxy_init">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="proxy_info">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>

    <operation name="proxy_destroy">
      <soap:operation soapAction="urn:SaraGridAction"/>
      <input>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded" 
                   namespace="urn:SaraGrid" 
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>
  </binding>

  <service name="SaraGridService">
    <documentation>Opens up SARA Grid services via SOAP</documentation>
    <port name="SaraGridPort" binding="typens:SaraGridBinding">
      <soap:address location="https://mu7.matrix.sara.nl:443/SaraGridServiceLCG"/> 
    </port>
  </service>
</definitions>
