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

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

  <xsd:element name="notifications">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Group of the notifications.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="notification_for_user" minOccurs="0" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Notifications of a user.

              user_id : Reference to base:User.
            </xsd:documentation>
          </xsd:annotation>
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="notification" type="NotificationType" minOccurs="0" maxOccurs="unbounded" />
              <xsd:any namespace="##local" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </xsd:sequence>
            <xsd:attribute name="user_id" type="base:IDType" use="required" />
            <xsd:anyAttribute processContents="lax" />
          </xsd:complexType>
        </xsd:element>
        <xsd:any namespace="##local" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
      </xsd:sequence>
      <xsd:anyAttribute processContents="lax" />
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="NotificationType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        The notification.

        module_id : Module name (ex. 'Message', 'Schedule', 'Workflow', ...).
        item      : Application data reference (Xpath 2.0).
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="module_id"        type="base:IDType"             use="required" />
    <xsd:attribute name="item"             type="base:NonBlankStringType" use="required" />
    <xsd:attribute name="status"           type="StatusType"              use="required" />
    <xsd:attribute name="is_history"       type="xsd:boolean"             use="required" />
    <xsd:attribute name="read_datetime"    type="xsd:dateTime"            use="optional" />
    <xsd:attribute name="receive_datetime" type="xsd:dateTime"            use="optional" />
    <xsd:attribute name="subject"          type="xsd:string"              use="optional" />
    <xsd:attribute name="subject_url"      type="xsd:string"              use="optional" />
    <xsd:attribute name="subject_icon"     type="xsd:string"              use="optional" />
    <xsd:attribute name="abstract"         type="xsd:string"              use="optional" />
    <xsd:attribute name="abstract_url"     type="xsd:string"              use="optional" />
    <xsd:attribute name="abstract_icon"    type="xsd:string"              use="optional" />
    <xsd:attribute name="sender_name"      type="xsd:string"              use="optional" />
    <xsd:attribute name="sender_id"        type="base:IDType"             use="optional" />
    <xsd:attribute name="sender_url"       type="xsd:string"              use="optional" />
    <xsd:attribute name="group_name"       type="xsd:string"              use="optional" />
    <xsd:attribute name="attached"         type="xsd:boolean"             use="optional" />
    <xsd:attribute name="version"          type="base:VersionType"        use="required" />
    <xsd:anyAttribute processContents="lax" />
  </xsd:complexType>

  <xsd:simpleType name="StatusType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Whether the notification is new one or update one.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="create" />
      <xsd:enumeration value="update" />
      <xsd:enumeration value="delete" />
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>
