<?xml version='1.0' encoding='UTF-8'?>
<definitions name="SW.wsdl" targetNamespace="urn:SW.wsdl"
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:si="http://soapinterop.org/xsd"
    xmlns:typens="urn:SW.wsdl"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    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:SW.wsdl">
            <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
            <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />
            <xsd:complexType name="Location">
                <xsd:all>
                    <xsd:element name="x" type="xsd:float"/>
                    <xsd:element name="y" type="xsd:float"/>
                    <xsd:element name="z" type="xsd:float"/>
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="Orientation">
                <xsd:all>
                    <xsd:element name="x" type="xsd:float"/>
                    <xsd:element name="y" type="xsd:float"/>
                    <xsd:element name="z" type="xsd:float"/>
                    <xsd:element name="a" type="xsd:float"/>
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="SWModel">
                <xsd:all>
                    <xsd:element name="desc" type="xsd:string" nillable="1"/>
                    <xsd:element name="file" type="xsd:base64Binary" nillable="1"/>
                    <xsd:element name="filename" type="xsd:string" nillable="1"/>
                    <xsd:element name="file_uri" type="xsd:string" nillable="1"/>
                    <xsd:element name="template_id" type="xsd:integer" nillable="1"/>
                    <xsd:element name="title" type="xsd:string" nillable="1"/>
                    <xsd:element name="view_state" type="xsd:string" nillable="1"/>
                    <xsd:element name="tags" type="xsd:string" nillable="1" />
                    <xsd:element name="has_color" type="xsd:boolean"/>
                    <xsd:element name="modeltype" type="xsd:string" nillable="1"/>
                    <xsd:element name="scale" type="xsd:float" nillable="1"/>
                    <xsd:element name="markup" type="xsd:float" nillable="1"/>
                    <xsd:element name="availability" type="xsd:integer" nillable="1"/>
                    <xsd:element name="materials" type="xsd:array" nillable="1"/>                    
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="SWModelPrice">
                <xsd:all>
                    <xsd:element name="price" type="xsd:float" nillable="1"/>
                    <xsd:element name="includes_tax" type="xsd:boolean"/>
                    <xsd:element name="includes_shipping" type="xsd:boolean"/>
                    <xsd:element name="currency" type="xsd:string"/>
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="Printer">
                <xsd:all>
                    <xsd:element name="title" type="xsd:string"/>
                    <xsd:element name="volume" type="xsd:float"/>
                    <xsd:element name="wallthickness" type="xsd:float"/>
                    <xsd:element name="technology" type="xsd:string"/>
                    <xsd:element name="x_bound_max" type="xsd:float"/>
                    <xsd:element name="x_bound_min" type="xsd:float"/>
                    <xsd:element name="y_bound_max" type="xsd:float"/>
                    <xsd:element name="y_bound_min" type="xsd:float"/>
                    <xsd:element name="z_bound_max" type="xsd:float"/>
                    <xsd:element name="z_bound_min" type="xsd:float"/>
                    <xsd:element name="materials" type="typens:MaterialArray"/>
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="MaterialArray">
                <xsd:complexContent>
                    <xsd:restriction base="SOAP-ENC:Array">
                        <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="typens:Material[]"/>
                    </xsd:restriction>
                </xsd:complexContent>
            </xsd:complexType>
            <xsd:complexType name="Material">
                <xsd:all>
                    <xsd:element name="id" type="xsd:integer"/>
                    <xsd:element name="title" type="xsd:string"/>
                    <xsd:element name="description" type="xsd:string"/>
                    <xsd:element name="base_color" type="xsd:string"/>
                    <xsd:element name="specular_color" type="xsd:string"/>
                    <xsd:element name="shineness" type="xsd:integer"/>
                    <xsd:element name="opacity" type="xsd:float"/>
                    <xsd:element name="translucency" type="xsd:float"/>
                    <xsd:element name="refractive_index" type="xsd:float"/>
                    <xsd:element name="startup_cost" type="xsd:float"/>
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="PrinterArray">
                <xsd:complexContent>
                    <xsd:restriction base="SOAP-ENC:Array">
                        <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="typens:Printer[]"/>
                    </xsd:restriction>
                </xsd:complexContent>
            </xsd:complexType>
        </xsd:schema>
    </types>
    <message name="getPrinters">
        <part name="session_id" type="xsd:string"/>
        <part name="template_id" type="xsd:integer" nillable="1"/>
        <part name="application_id" type="xsd:string" nillable="1"/>
    </message>
    <message name="getPrintersResponse">
        <part name="getPrintersReturn" type="typens:PrinterArray"/>
    </message>
    <message name="login">
        <part name="username" type="xsd:string"/>
        <part name="password" type="xsd:string"/>
        <part name="application_id" type="xsd:string" nillable="1"/>
    </message>
    <message name="loginResponse">
        <part name="loginReturn" type="xsd:string"/>
    </message>
    <message name="submitModel">
        <part name="session_id" type="xsd:string"/>
        <part name="model" type="typens:SWModel"/>
        <part name="templateId" type="xsd:integer" nillable="1"/>
        <part name="application_id" type="xsd:string" nillable="1"/>
    </message>
    <message name="submitModelResponse">
        <part name="response" type="xsd:string"/>
    </message>
    <message name="getModelPrice">
        <part name="session_id" type="xsd:string"/>
        <part name="modelVolume" type="xsd:float"/>
        <part name="materialId" type="xsd:integer"/>
        <part name="templateId" type="xsd:integer" nillable="1"/>
        <part name="application_id" type="xsd:string" nillable="1"/>
    </message>
    <message name="getModelPriceResponse">
        <part name="SWModelPriceReturn" type="typens:SWModelPrice"/>
    </message>
    <portType name="SWWebServicePortType">
        <documentation>
            SW WebService Handler
        </documentation>
        <operation name="getPrinters">
            <documentation>
                Returns the available printers and printing materials
            </documentation>
            <input message="typens:getPrinters"/>
            <output message="typens:getPrintersResponse"/>
        </operation>
        <operation name="login">
            <documentation>
                Login and create session id
            </documentation>
            <input message="typens:login"/>
            <output message="typens:loginResponse"/>
        </operation>
        <operation name="submitModel">
            <documentation>
                Will save a newly created model.
            </documentation>
            <input message="typens:submitModel"/>
            <output message="typens:submitModelResponse"/>
        </operation>
        <operation name="getModelPrice">
            <documentation>
                Return the price of the specified model for the specified material excluding tax and shipping.
            </documentation>
            <input message="typens:getModelPrice"/>
            <output message="typens:getModelPriceResponse"/>
        </operation>
    </portType>
    <binding name="SWWebServiceBinding" type="typens:SWWebServicePortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="getPrinters">
            <soap:operation soapAction="urn:SWWebServiceAction"/>
            <input>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </input>
            <output>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </output>
        </operation>
        <operation name="login">
            <soap:operation soapAction="urn:SWWebServiceAction"/>
            <input>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </input>
            <output>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </output>
        </operation>
        <operation name="submitModel">
            <soap:operation soapAction="urn:SWWebServiceAction"/>
            <input>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </input>
            <output>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </output>
        </operation>
        <operation name="getModelPrice">
            <soap:operation soapAction="urn:SWWebServiceAction"/>
            <input>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </input>
            <output>
                <soap:body namespace="urn:SW.wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </output>
        </operation>
    </binding>
    <service name="SW.wsdlService">
        <port name="SWWebServicePort" binding="typens:SWWebServiceBinding">
            <soap:address location="http://www.shapeways.com/modules/shapeways_api/webservice/v1/soap.php"/>
        </port>
    </service>
</definitions>