<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://schemas.cybozu.co.jp/cabinet/2008"
            xmlns:base="http://schemas.cybozu.co.jp/base/2008"
            targetNamespace="http://schemas.cybozu.co.jp/cabinet/2008"
            elementFormDefault="qualified">
  
  <xsd:import namespace="http://schemas.cybozu.co.jp/base/2008" schemaLocation="base.xsd" />

  <xsd:complexType name="FolderInformationType">
    <xsd:sequence>
      <xsd:element name="root" type="FolderType" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="FolderType">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="description" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_id" type="xsd:string"  minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_login_name" type="xsd:string"  minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="create_time" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_id" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modify_time" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="folders" type="FoldersType" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="id" type="base:IDType" use="required"/>
    <xsd:attribute name="code" type="xsd:string" use="required"/>
    <xsd:attribute name="list_index" type="xsd:unsignedInt" use="required"/>
  </xsd:complexType>
  
  <xsd:complexType name="FoldersType">
    <xsd:sequence>
      <xsd:element name="folder" type="FolderType" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="parent_id" type="base:IDType" use="required" />
    <xsd:attribute name="parent_code" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <xsd:complexType name="FileInformationType">
    <xsd:sequence>
      <xsd:element name="files" type="FilesType" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="SimpleFileType">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="max_version" type="xsd:integer" minOccurs="1" maxOccurs="1" />
      <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="size" type="xsd:unsignedInt" minOccurs="1" maxOccurs="1" />
      <xsd:element name="mime_type" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="creator_id" type="base:IDType" minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="create_time" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_id" type="base:IDType" minOccurs="0" maxOccurs="1" />
      <xsd:element name="modifier_login_name" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="modifier_display_name" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="modify_time" type="xsd:string" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="id" type="base:IDType" use="required" />
    <xsd:attribute name="folder_id" type="base:IDType" use="required" />
  </xsd:complexType>
  
  <xsd:complexType name="SimpleFileInformationType">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="max_version" type="xsd:integer" minOccurs="1" maxOccurs="1" />
      <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="size" type="xsd:unsignedInt" minOccurs="1" maxOccurs="1" />
      <xsd:element name="mime_type" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="creator_id" type="base:IDType" minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="create_time" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_id" type="base:IDType" minOccurs="0" maxOccurs="1" />
      <xsd:element name="modifier_login_name" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="modifier_display_name" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="modify_time" type="xsd:dateTime" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="id" type="base:IDType" use="required" />
    <xsd:attribute name="folder_id" type="base:IDType" use="required" />
  </xsd:complexType>

  <xsd:complexType name="FileType">
    <xsd:complexContent>
      <xsd:extension base="SimpleFileType">
        <xsd:sequence>
          <xsd:element name="histories" minOccurs="1" maxOccurs="1">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="history" type="HistoryType" minOccurs="1" maxOccurs="unbounded" />
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="FilesType">
    <xsd:sequence>
      <xsd:element name="file" type="FileType" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="parent_id" type="base:IDType" use="required" />
    <xsd:attribute name="parent_code" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <xsd:complexType name="HistoryType">
    <xsd:sequence>
      <xsd:element name="version" type="xsd:unsignedInt" minOccurs="1" maxOccurs="1" />
      <xsd:element name="active" type="xsd:unsignedInt" minOccurs="1" maxOccurs="1" />
      <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="action" type="xsd:unsignedInt" minOccurs="1" maxOccurs="1" />
      <xsd:element name="comment" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_id" type="base:IDType" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modify_time" type="xsd:date" minOccurs="1" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
