module nc-notifications {

    namespace "urn:ietf:params:xml:ns:netmod:notification";
    prefix "manageEvent";

    import ietf-yang-types{ prefix yang; }
    import notifications { prefix ncEvent; }

    organization
      "IETF NETCONF WG";

    contact
      "netconf@ietf.org";

    description
      "Conversion of the 'manageEvent' XSD in the NETCONF
       Notifications RFC.";

    reference
      "RFC 5277";

    revision 2008-07-14 {
      description "RFC 5277 version.";
    }

    container netconf {
      description "Top-level element in the notification namespace";

      config false;

      container streams {
        description 
          "The list of event streams supported by the system. When
           a query is issued, the returned set of streams is 
           determined based on user privileges.";

        list stream {
          description 
            "Stream name, description and other information.";
          key name;
          min-elements 1;

          leaf name {
            description
              "The name of the event stream. If this is the default
               NETCONF stream, this must have the value 'NETCONF'.";
            type ncEvent:streamNameType;
          }

          leaf description {
            description
              "A description of the event stream, including such
               information as the type of events that are sent over
               this stream.";
            type string;
            mandatory true;
          }

          leaf replaySupport {
            description
              "A description of the event stream, including such
               information as the type of events that are sent over
               this stream.";
            type boolean;
            mandatory true;
          }

          leaf replayLogCreationTime {
            description
              "The timestamp of the creation of the log used to support
               the replay function on this stream. Note that this might
               be earlier then the earliest available notification in
               the log. This object is updated if the log resets for 
               some reason.  This object MUST be present if replay is
               supported.";
            type yang:date-and-time;   // xsd:dateTime is wrong!
          }
        }
      }
    }

    notification replayComplete {
      description
        "This notification is sent to signal the end of a replay
         portion of a subscription.";
    }

    notification notificationComplete {
      description
        "This notification is sent to signal the end of a notification
         subscription. It is sent in the case that stopTime was
         specified during the creation of the subscription..";
    }

}
