<?xml version="1.0" ?>
<definitions name="CybozuMessageServices"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             targetNamespace="http://wsdl.cybozu.co.jp/message/2008"
             xmlns:typens="http://wsdl.cybozu.co.jp/message/2008/types"
             xmlns:tns="http://wsdl.cybozu.co.jp/message/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>
    <xsd:schema targetNamespace="http://wsdl.cybozu.co.jp/message/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:message="http://schemas.cybozu.co.jp/message/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/message/2008"
                  schemaLocation="message.xsd" />
      <xsd:import namespace="http://wsdl.cybozu.co.jp/base/2008/types" />
      
      <xsd:complexType name="MessageGetFolderVersionsRequestType">
        <xsd:sequence>
          <xsd:element name="folder_item" type="base_types:ItemVersionType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageGetFolderVersionsResponseType">
        <xsd:sequence>
          <xsd:element name="folder_item" type="base_types:ItemVersionResultType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageRemoveThreadType">
        <xsd:attribute name="folder_id" type="base:IDType" use="required"/>
        <xsd:attribute name="thread_id" type="base:IDType" use="required"/>
      </xsd:complexType>
      
      <xsd:simpleType name="MessageFolderTypeType">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="root" />
          <xsd:enumeration value="received" />
          <xsd:enumeration value="sent" />
          <xsd:enumeration value="draft" />
          <xsd:enumeration value="trash" />
          <xsd:enumeration value="user_folder" />
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="MessageFolderType">
        <xsd:complexContent>
          <xsd:extension base="message:FolderType">
            <xsd:attribute name="folder_type" type="typens:MessageFolderTypeType" use="required" />
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>
      <xsd:complexType name="MessageGetFoldersByIdRequestType">
        <xsd:sequence>
          <xsd:element name="folder_id" type="base:IDType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageGetFoldersByIdResponseType">
        <xsd:sequence>
          <xsd:element name="folder" type="typens:MessageFolderType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageGetThreadVersionsRequestType">
        <xsd:sequence>
          <xsd:element name="thread_item" type="base_types:ItemVersionType"
                       minOccurs="0" maxOccurs="unbounded" />
          <xsd:element name="folder_id" type="base:IDType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:attribute name="start" type="xsd:dateTime" use="required" />
        <xsd:attribute name="end" type="xsd:dateTime" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="MessageGetThreadVersionsResponseType">
        <xsd:sequence>
          <xsd:element name="thread_item" type="base_types:ItemVersionResultType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageGetThreadsByIdRequestType">
        <xsd:sequence>
          <xsd:element name="thread_id" type="base:IDType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageGetThreadsByIdResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageCreateThreadType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="1" maxOccurs="1" />
          <xsd:element name="file" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="content" type="xsd:base64Binary"
                             minOccurs="1" maxOccurs="1" />
              </xsd:sequence>
              <xsd:attribute name="id" type="base:IDType" use="required"/>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="remove_file_id" type="base:IDType"
                         minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:attribute name="draft_id" type="base:IDType" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="MessageCreateThreadsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="create_thread" type="typens:MessageCreateThreadType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageCreateThreadsResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageModifyThreadsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="modify_thread" type="typens:MessageCreateThreadType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageModifyThreadsResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageSaveDraftThreadsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="save_draft_thread" type="typens:MessageCreateThreadType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageSaveDraftThreadsResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageRemoveThreadsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="param" type="typens:MessageRemoveThreadType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:attribute name="delete_all_inbox" type="xsd:boolean" use="optional" />
      </xsd:complexType>

      <xsd:complexType name="MessageConfirmThreadsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="thread_id" type="base:IDType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageConfirmThreadsResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageSearchThreadsRequestType">
        <xsd:attribute name="text" type="xsd:string" use="required" />
        <xsd:attribute name="start" type="xsd:dateTime" use="optional" />
        <xsd:attribute name="end" type="xsd:dateTime" use="optional" />
        <xsd:attribute name="folder_id" type="base:IDType" use="optional" />
        <xsd:attribute name="search_sub_folders" type="xsd:boolean" use="optional" />
        <xsd:attribute name="title_search" type="xsd:boolean" use="required" />
        <xsd:attribute name="body_search" type="xsd:boolean" use="required" />
        <xsd:attribute name="from_search" type="xsd:boolean" use="required" />
        <xsd:attribute name="addressee_search" type="xsd:boolean" use="required" />
        <xsd:attribute name="follow_search" type="xsd:boolean" use="required" />
      </xsd:complexType>
      <xsd:complexType name="MessageSearchThreadsResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageGetFollowsRequestType">
        <xsd:attribute name="thread_id" type="base:IDType" use="required" />
        <xsd:attribute name="offset" type="xsd:unsignedLong" use="required" />
        <xsd:attribute name="limit" type="xsd:unsignedLong" use="required" />
      </xsd:complexType>
      <xsd:complexType name="MessageGetFollowsResponseType">
        <xsd:sequence>
          <xsd:element name="follow" type="message:FollowType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageAddFollowType">
        <xsd:sequence>
          <xsd:element name="follow" type="message:FollowType"
                       minOccurs="1" maxOccurs="1" />
          <xsd:element name="file" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="content" type="xsd:base64Binary"
                             minOccurs="1" maxOccurs="1" />
              </xsd:sequence>
              <xsd:attribute name="id" type="base:IDType" use="required"/>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="thread_id" type="base:IDType" use="required" />
      </xsd:complexType>
      <xsd:complexType name="MessageAddFollowsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="add_follow" type="typens:MessageAddFollowType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageAddFollowsResponseType">
        <xsd:sequence>
          <xsd:element name="thread" type="message:ThreadType"
                       minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageRemoveFollowsRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="follow_id" type="base:IDType"
                       minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessagePersonalProfileType">
        <xsd:attribute name="use_trash" type="xsd:boolean" use="optional" />
        <xsd:attribute name="trash_duration" type="xsd:positiveInteger" default="5" use="optional" />
      </xsd:complexType>
      
      <xsd:simpleType name="MessageConfirmActionType">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Auto" />
          <xsd:enumeration value="Manual" />
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="MessageSystemProfileType">
        <xsd:attribute name="check_send_confirm" type="xsd:boolean" use="optional" />
        <xsd:attribute name="confirm_action" type="typens:MessageConfirmActionType" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="MessageGetProfilesRequestType">
        <xsd:attribute name="include_system_profile" type="xsd:boolean" use="optional" />
      </xsd:complexType>
      <xsd:complexType name="MessageGetProfilesResponseType">
        <xsd:sequence>
          <xsd:element name="personal_profile" type="typens:MessagePersonalProfileType"
                       minOccurs="1" maxOccurs="1"/>
          <xsd:element name="system_profile" type="typens:MessageSystemProfileType"
                       minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="MessageSetProfilesRequestType">
        <xsd:sequence>
          <xsd:element name="request_token" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <xsd:element name="personal_profile" type="typens:MessagePersonalProfileType"
                       minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="MessageSetProfilesResponseType">
        <xsd:sequence>
          <xsd:element name="personal_profile" type="typens:MessagePersonalProfileType"
                       minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
      </xsd:complexType>

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

  <message name="MessageGetFolderVersionsRequest">
    <part name="parameters" type="typens:MessageGetFolderVersionsRequestType" />
  </message>
  <message name="MessageGetFolderVersionsResponse">
    <part name="returns" type="typens:MessageGetFolderVersionsResponseType" />
  </message>

  <message name="MessageGetFoldersByIdRequest">
    <part name="parameters" type="typens:MessageGetFoldersByIdRequestType" />
  </message>
  <message name="MessageGetFoldersByIdResponse">
    <part name="returns" type="typens:MessageGetFoldersByIdResponseType" />
  </message>

  <message name="MessageGetThreadVersionsRequest">
    <part name="parameters" type="typens:MessageGetThreadVersionsRequestType" />
  </message>
  <message name="MessageGetThreadVersionsResponse">
    <part name="returns" type="typens:MessageGetThreadVersionsResponseType" />
  </message>

  <message name="MessageGetThreadsByIdRequest">
    <part name="parameters" type="typens:MessageGetThreadsByIdRequestType" />
  </message>
  <message name="MessageGetThreadsByIdResponse">
    <part name="returns" type="typens:MessageGetThreadsByIdResponseType" />
  </message>
  
  <message name="MessageCreateThreadsRequest">
    <part name="parameters" type="typens:MessageCreateThreadsRequestType" />
  </message>
  <message name="MessageCreateThreadsResponse">
    <part name="returns" type="typens:MessageCreateThreadsResponseType" />
  </message>

  <message name="MessageModifyThreadsRequest">
    <part name="parameters" type="typens:MessageModifyThreadsRequestType" />
  </message>
  <message name="MessageModifyThreadsResponse">
    <part name="returns" type="typens:MessageModifyThreadsResponseType" />
  </message>

  <message name="MessageRemoveThreadsRequest">
    <part name="parameters" type="typens:MessageRemoveThreadsRequestType" />
  </message>
  
  <message name="MessageSaveDraftThreadsRequest">
    <part name="parameters" type="typens:MessageSaveDraftThreadsRequestType" />
  </message>
  <message name="MessageSaveDraftThreadsResponse">
    <part name="returns" type="typens:MessageSaveDraftThreadsResponseType" />
  </message>

  <message name="MessageConfirmThreadsRequest">
    <part name="parameters" type="typens:MessageConfirmThreadsRequestType" />
  </message>
  <message name="MessageConfirmThreadsResponse">
    <part name="returns" type="typens:MessageConfirmThreadsResponseType" />
  </message>
  
  <message name="MessageSearchThreadsRequest">
    <part name="parameters" type="typens:MessageSearchThreadsRequestType" />
  </message>
  <message name="MessageSearchThreadsResponse">
    <part name="returns" type="typens:MessageSearchThreadsResponseType" />
  </message>
  
  <message name="MessageGetFollowsRequest">
    <part name="parameters" type="typens:MessageGetFollowsRequestType" />
  </message>
  <message name="MessageGetFollowsResponse">
    <part name="returns" type="typens:MessageGetFollowsResponseType" />
  </message>

  <message name="MessageAddFollowsRequest">
    <part name="parameters" type="typens:MessageAddFollowsRequestType" />
  </message>
  <message name="MessageAddFollowsResponse">
    <part name="returns" type="typens:MessageAddFollowsResponseType" />
  </message>

  <message name="MessageRemoveFollowsRequest">
    <part name="parameters" type="typens:MessageRemoveFollowsRequestType" />
  </message>

  <message name="MessageGetProfilesRequest">
    <part name="parameters" type="typens:MessageGetProfilesRequestType" />
  </message>
  <message name="MessageGetProfilesResponse">
    <part name="returns" type="typens:MessageGetProfilesResponseType" />
  </message>

  <message name="MessageSetProfilesRequest">
    <part name="parameters" type="typens:MessageSetProfilesRequestType" />
  </message>
  <message name="MessageSetProfilesResponse">
    <part name="returns" type="typens:MessageSetProfilesResponseType" />
  </message>

  <message name="MessageFileDownloadRequest">
    <part name="parameters" type="typens:MessageFileDownloadRequestType" />
  </message>
  <message name="MessageFileDownloadResponse">
    <part name="returns" type="typens:MessageFileDownloadResponseType" />
  </message>
  
  <portType name="MessagePort">
    
    <operation name="MessageGetFolderVersions">
      <documentation>
        This API gets the modified folders for login user.
        "folder_item" is a list of folders that a client has.
      </documentation>
      <input message="tns:MessageGetFolderVersionsRequest" />
      <output message="tns:MessageGetFolderVersionsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageGetFoldersById">
      <documentation>
        This API gets the folders by folder id.
        The client sends list of "folder_id" for specify the folder to search.
      </documentation>
      <input message="tns:MessageGetFoldersByIdRequest" />
      <output message="tns:MessageGetFoldersByIdResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageGetThreadVersions">
      <documentation>
        This API gets the modified threads for login user.
        "thread_item" is a list of threads that a client has.
      </documentation>
      <input message="tns:MessageGetThreadVersionsRequest" />
      <output message="tns:MessageGetThreadVersionsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageGetThreadsById">
      <documentation>
        This API gets the threads by thread id.
        The client sends list of "thread_id" for specify the thread to search.
      </documentation>
      <input message="tns:MessageGetThreadsByIdRequest" />
      <output message="tns:MessageGetThreadsByIdResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageCreateThreads">
      <documentation>
        This API creates the threads.
        The service returns the threads that created.
      </documentation>
      <input message="tns:MessageCreateThreadsRequest" />
      <output message="tns:MessageCreateThreadsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageModifyThreads">
      <documentation>
        This API modifies the threads.
        The service returns the threads that modified.
      </documentation>
      <input message="tns:MessageModifyThreadsRequest" />
      <output message="tns:MessageModifyThreadsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageRemoveThreads">
      <documentation>
        This API removes the threads.
        The service returns empty response.
      </documentation>
      <input message="tns:MessageRemoveThreadsRequest" />
      <output message="base_services:EmptyResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageSaveDraftThreads">
      <documentation>
        This API saves the draft threads.
        The service returns the draft threads that saved.
      </documentation>
      <input message="tns:MessageSaveDraftThreadsRequest" />
      <output message="tns:MessageSaveDraftThreadsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageConfirmThreads">
      <documentation>
        This API confirmes the threads.
        The service returns the threads that confirmed.
      </documentation>
      <input message="tns:MessageConfirmThreadsRequest" />
      <output message="tns:MessageConfirmThreadsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageSearchThreads">
      <documentation>
        This API searches the threads.
      </documentation>
      <input message="tns:MessageSearchThreadsRequest" />
      <output message="tns:MessageSearchThreadsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageGetFollows">
      <documentation>
        This API gets follows from thread.
        "offset" and "limit" specifies search range.
      </documentation>
      <input message="tns:MessageGetFollowsRequest" />
      <output message="tns:MessageGetFollowsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageAddFollows">
      <documentation>
        This API add follows to thread.
        The service returns the threads that a follow added.
      </documentation>
      <input message="tns:MessageAddFollowsRequest" />
      <output message="tns:MessageAddFollowsResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageRemoveFollows">
      <documentation>
        This API remove follows from thread.
        The service returns empty response.
      </documentation>
      <input message="tns:MessageRemoveFollowsRequest" />
      <output message="base_services:EmptyResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>
    
    <operation name="MessageGetProfiles">
      <documentation>
        This API gets profiles in the message application.
      </documentation>
      <input message="tns:MessageGetProfilesRequest" />
      <output message="tns:MessageGetProfilesResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageSetProfiles">
      <documentation>
        This API sets profiles in the message application.
      </documentation>
      <input message="tns:MessageSetProfilesRequest" />
      <output message="tns:MessageSetProfilesResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

    <operation name="MessageFileDownload">
      <documentation>
        This API download the file in message.
      </documentation>
      <input message="tns:MessageFileDownloadRequest" />
      <output message="tns:MessageFileDownloadResponse" />
      <fault name="CybozuError" message="base_services:Fault" />
    </operation>

  </portType>

  <binding name="MessageBinding" type="tns:MessagePort">
    <soap12:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

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

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

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

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

    <operation name="MessageCreateThreads">
      <soap12:operation soapAction="MessageSaveCreateThreads" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </fault>
    </operation>

    <operation name="MessageModifyThreads">
      <soap12:operation soapAction="MessageSaveModifyThreads" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </fault>
    </operation>

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

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

    <operation name="MessageRemoveThreads">
      <soap12:operation soapAction="MessageRemoveThreads" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </fault>
    </operation>
    
    <operation name="MessageSearchThreads">
      <soap12:operation soapAction="MessageSearchThreads" soapActionRequired="true" />
      <input>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </input>
      <output>
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </output>
      <fault name="CybozuError">
        <soap12:body use="literal" namespace="http://wsdl.cybozu.co.jp/message/2008" />
      </fault>
    </operation>

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

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

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

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

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

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

  </binding>

</definitions>