<?xml version="1.0" encoding="UTF-8"?>
<definitions name="CybozuCabinetServices"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             targetNamespace="http://wsdl.cybozu.co.jp/cabinet/2008"
             xmlns:typens="http://wsdl.cybozu.co.jp/cabinet/2008/types"
             xmlns:tns="http://wsdl.cybozu.co.jp/cabinet/2008"
             xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
             xmlns:base_services="http://wsdl.cybozu.co.jp/base/2008">
             
   <wsdl:import namespace="http://wsdl.cybozu.co.jp/base/2008" location="base.wsdl"/>

  <!-- *** types *** -->
  <types>
    <xsd:schema targetNamespace="http://wsdl.cybozu.co.jp/cabinet/2008/types"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:base="http://schemas.cybozu.co.jp/base/2008"
            xmlns:cabinet="http://schemas.cybozu.co.jp/cabinet/2008"
            xmlns:base_types="http://wsdl.cybozu.co.jp/base/2008/types">

      <xsd:import namespace="http://schemas.cybozu.co.jp/base/2008"
                  schemaLocation="base.xsd" />
      <xsd:import namespace="http://schemas.cybozu.co.jp/cabinet/2008"
                  schemaLocation="cabinet.xsd" />
      <xsd:import namespace="http://wsdl.cybozu.co.jp/base/2008/types" />

      <xsd:complexType name="CabinetGetFolderInfoRequestType">
      </xsd:complexType>
      <xsd:complexType name="CabinetGetFolderInfoResponseType">
        <xsd:sequence>
          <xsd:element name="folder_information" type="cabinet:FolderInformationType" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="CabinetGetFileInfoRequestType">
        <xsd:attribute name="hid" type="base:IDType" use="required" />
      </xsd:complexType>
      <xsd:complexType name="CabinetGetFileInfoResponseType">
        <xsd:sequence>
          <xsd:element name="file_information" type="cabinet:FileInformationType" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="CabinetFileDownloadRequestType">
        <xsd:attribute name="file_id" type="base:IDType" use="required" />
      </xsd:complexType>
      <xsd:complexType name="CabinetFileDownloadResponseType">
        <xsd:sequence>
          <xsd:element name="file" type="base_types:FileBodyType" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="CabinetAddFileRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="content" type="xsd:base64Binary" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="hid" type="base:IDType" use="required" />
        <xsd:attribute name="name" type="xsd:string" use="required" />
        <xsd:attribute name="title" type="xsd:string" use="optional" />
        <xsd:attribute name="version" type="base:IDType" use="optional" />
        <xsd:attribute name="description" type="xsd:string" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="CabinetAddFileResponseType">
        <xsd:sequence>
          <xsd:element name="file" type="cabinet:SimpleFileType" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>
      
      <xsd:complexType name="CabinetUpdateFileRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="content" type="xsd:base64Binary" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="file_id" type="base:IDType" use="required" />
        <xsd:attribute name="name" type="xsd:string" use="required" />
        <xsd:attribute name="comment" type="xsd:string" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="CabinetUpdateFileResponseType">
        <xsd:sequence>
          <xsd:element name="file" type="cabinet:SimpleFileInformationType" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>
      
      <xsd:complexType name="CabinetUpdateFileInformationRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="file_id" type="base:IDType" use="required" />
        <xsd:attribute name="title" type="xsd:string" use="optional" />
        <xsd:attribute name="version" type="base:IDType" use="optional" />
        <xsd:attribute name="description" type="xsd:string" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="CabinetUpdateFileInformationResponseType">
        <xsd:sequence>
          <xsd:element name="file" type="cabinet:SimpleFileInformationType" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>
      
      <xsd:complexType name="CabinetDeleteFilesRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="file_id" type="base:IDType" minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </types>

  <!-- *** message *** -->
  <message name="CabinetGetFolderInfoRequest">
    <part name="parameters" type="typens:CabinetGetFolderInfoRequestType" />
  </message>
  <message name="CabinetGetFolderInfoResponse">
    <part name="returns" type="typens:CabinetGetFolderInfoResponseType" />
  </message>

  <message name="CabinetGetFileInfoRequest">
    <part name="parameters" type="typens:CabinetGetFileInfoRequestType" />
  </message>
  <message name="CabinetGetFileInfoResponse">
    <part name="returns" type="typens:CabinetGetFileInfoResponseType" />
  </message>

  <message name="CabinetFileDownloadRequest">
    <part name="parameters" type="typens:CabinetFileDownloadRequestType" />
  </message>
  <message name="CabinetFileDownloadResponse">
    <part name="returns" type="typens:CabinetFileDownloadResponseType" />
  </message>

  <message name="CabinetAddFileRequest">
    <part name="parameters" type="typens:CabinetAddFileRequestType" />
  </message>
  <message name="CabinetAddFileResponse">
    <part name="returns" type="typens:CabinetAddFileResponseType" />
  </message>
  
  <message name="CabinetUpdateFileRequest">
    <part name="parameters" type="typens:CabinetUpdateFileRequestType" />
  </message>
  <message name="CabinetUpdateFileResponse">
    <part name="returns" type="typens:CabinetUpdateFileResponseType" />
  </message>
  
  <message name="CabinetUpdateFileInformationRequest">
    <part name="parameters" type="typens:CabinetUpdateFileInformationRequestType" />
  </message>
  <message name="CabinetUpdateFileInformationResponse">
    <part name="returns" type="typens:CabinetUpdateFileInformationResponseType" />
  </message>
  
  <message name="CabinetDeleteFilesRequest">
    <part name="parameters" type="typens:CabinetDeleteFilesRequestType" />
  </message>

  <!-- *** portType *** -->
  <portType name="CabinetPort">
    <operation name="CabinetGetFolderInfo">
      <input  message="tns:CabinetGetFolderInfoRequest" />
      <output message="tns:CabinetGetFolderInfoResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>
    
    <operation name="CabinetGetFileInfo">
      <input  message="tns:CabinetGetFileInfoRequest" />
      <output message="tns:CabinetGetFileInfoResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>

    <operation name="CabinetFileDownload">
      <input  message="tns:CabinetFileDownloadRequest" />
      <output message="tns:CabinetFileDownloadResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>

    <operation name="CabinetAddFile">
      <input  message="tns:CabinetAddFileRequest" />
      <output message="tns:CabinetAddFileResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>
    
    <operation name="CabinetUpdateFile">
      <input  message="tns:CabinetUpdateFileRequest" />
      <output message="tns:CabinetUpdateFileResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>
    
    <operation name="CabinetUpdateFileInformation">
      <input  message="tns:CabinetUpdateFileInformationRequest" />
      <output message="tns:CabinetUpdateFileInformationResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>
    
    <operation name="CabinetDeleteFiles">
      <input  message="tns:CabinetDeleteFilesRequest" />
      <output message="base_services:EmptyResponse" />
      <fault  message="base_services:Fault" name="CybozuError" />
    </operation>
  </portType>
  
  <!-- *** binding *** -->
  <binding name="CabinetBinding" type="tns:CabinetPort">
    <soap12:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

    <operation name="CabinetGetFolderInfo">
      <soap12:operation soapAction="CabinetGetFolderInfo" soapActionRequired="true" />
      <input name="CabinetGetFolderInfoRequest">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output name="CabinetGetFolderInfoResponse">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>
    
    <operation name="CabinetGetFileInfo">
      <soap12:operation soapAction="CabinetGetFolderInfo" soapActionRequired="true" />
      <input name="CabinetGetFileInfoRequest">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output name="CabinetGetFileInfoResponse">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>

    <operation name="CabinetFileDownload">
      <soap12:operation soapAction="CabinetFileDownload" soapActionRequired="true" />
      <input name="CabinetFileDownloadRequest">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output name="CabinetFileDownloadResponse">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>

    <operation name="CabinetAddFile">
      <soap12:operation soapAction="CabinetAddFile" soapActionRequired="true" />
      <input name="CabinetAddFileRequest">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output name="CabinetAddFileResponse">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>
    
    <operation name="CabinetUpdateFile">
      <soap12:operation soapAction="CabinetUpdateFile" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>
    
    <operation name="CabinetUpdateFileInformation">
      <soap12:operation soapAction="CabinetUpdateFileInformation" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>
    
    <operation name="CabinetDeleteFiles">
      <soap12:operation soapAction="CabinetDeleteFiles" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/cabinet/2008" />
      </fault>
    </operation>
  </binding>
</definitions>
