<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.ansys.com/ingress/commons/fts/schema"
    xmlns:tns="http://www.ansys.com/ingress/commons/fts/schema"
    elementFormDefault="qualified">

    <xsd:complexType name="FtsException">
        <xsd:sequence>
            <xsd:element name="class"   type="xsd:string" />
            <xsd:element name="message" type="xsd:string" />
            <xsd:element name="rootCause" type="tns:FtsException"
                nillable="true"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="FtsRequestParameter">
        <xsd:sequence>
            <xsd:element name="parameterKey" type="xsd:string" />
            <xsd:element name="parameterValue" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="FtsRequest">
		<xsd:sequence>
			<xsd:element name="action" type="xsd:int" />
			<xsd:element name="requestParameters" type="tns:FtsRequestParameter"
				minOccurs="0" maxOccurs="unbounded" />
		</xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="FtsResponse">
        <xsd:sequence>
            <xsd:element name="status" type="xsd:int" />
            <xsd:element name="userDir" type="xsd:string" nillable="true" />
            <xsd:element name="exception" type="tns:FtsException"
                nillable="true" />
            <xsd:element name="dataPort" type="xsd:int" nillable="true" />
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="UploadResponse">
        <xsd:complexContent>
            <xsd:extension base="tns:FtsResponse">
                <xsd:sequence>
                    <xsd:element name="checksum" type="xsd:string" />
                    <xsd:element name="remotePath" type="xsd:string" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="ListEntry">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string" />
            <xsd:element name="length" type="xsd:long" />
            <xsd:element name="lastModified" type="xsd:dateTime" />
            <xsd:element name="directory" type="xsd:boolean" />
            <xsd:element name="childCount" type="xsd:long" />
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="ListResponse">
        <xsd:complexContent>
            <xsd:extension base="tns:FtsResponse">
                <xsd:sequence>
                    <xsd:element name="name" type="xsd:string" />
                    <xsd:element name="listEntry" type="tns:ListEntry"
                        minOccurs="0" maxOccurs="unbounded" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
	
	<xsd:complexType name="ChecksumResponse">
	  <xsd:complexContent>
		<xsd:extension base="tns:FtsResponse">
		  <xsd:sequence>
			<xsd:element name="checksum" type="xsd:string"/>
		  </xsd:sequence>
		</xsd:extension>
	  </xsd:complexContent>
	</xsd:complexType>
	
	

    <xsd:complexType name="PermissionsResponse">
        <xsd:complexContent>
            <xsd:extension base="tns:FtsResponse">
                <xsd:sequence>
                    <xsd:element name="permissions" type="xsd:int" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
	
	

    <xsd:complexType name="RunResponse">
        <xsd:complexContent>
            <xsd:extension base="tns:FtsResponse">
                <xsd:sequence>
                    <xsd:element name="runErrorCode" type="xsd:int" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="ftsRequest" type="tns:FtsRequest" />

    <xsd:element name="ftsResponse" type="tns:FtsResponse" />

    <xsd:element name="uploadResponse" type="tns:UploadResponse" />

    <xsd:element name="listResponse" type="tns:ListResponse" />

    <xsd:element name="checksumResponse" type="tns:ChecksumResponse" />

    <xsd:element name="permissionsResponse" type="tns:PermissionsResponse" />

    <xsd:element name="runResponse" type="tns:RunResponse" />

</xsd:schema>