module notifications {

    namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
    prefix "ncEvent";

    import ietf-yang-types { prefix yang; }

    organization
      "IETF NETCONF WG";

    contact
      "netconf@ops.ietf.org";

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

    reference
      "RFC 5277.";

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

    typedef streamNameType {
      description
        "The name of an event stream.";
      type string;
    }

    rpc create-subscription {
      description
        "The command to create a notification subscription. It
         takes as argument the name of the notification stream
         and filter. Both of those options limit the content of
         the subscription. In addition, there are two time-related
         parameters, startTime and stopTime, which can be used to
         select the time interval of interest to the notification
         replay feature.";

      input {
        leaf stream {
          description
            "An optional parameter that indicates which stream of events
             is of interest. If not present, then events in the default
             NETCONF stream will be sent.";
          type streamNameType;
          default "NETCONF";
        }

        anyxml filter {
          description
            "An optional parameter that indicates which subset of all
             possible events is of interest. The format of this
             parameter is the same as that of the filter parameter
             in the NETCONF protocol operations. If not present,
             all events not precluded by other parameters will
             be sent.";
        }

        leaf startTime {
          description
            "A parameter used to trigger the replay feature and
             indicates that the replay should start at the time
             specified. If start time is not present, this is not a
             replay subscription.";
          type yang:date-and-time;
        }

        leaf stopTime {
          // must ". >= ../startTime";
          description
            "An optional parameter used with the optional replay
             feature to indicate the newest notifications of
             interest. If stop time is not present, the notifications
             will continue until the subscription is terminated.
             Must be used with startTime.";
          type yang:date-and-time;
        }
      }
    }

   /*container notification {
      description "internal struct to start a notification";
      config false;

      leaf eventTime {
         mandatory true;
         type yang:date-and-time;
      }

      // eventType and any data content goes here
   }*/
}

