module clixon-rfc5277 {
    /*    namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";*/
    namespace "urn:ietf:params:xml:ns:netmod:notification";
    prefix "ncevent";

    import ietf-yang-types { prefix yang; }
    import ietf-inet-types { prefix inet; }

    organization
	"IETF NETCONF (Network Configuration) Working Group";

    description
	"Note this is a translation from RFC 5277 schema in section 4 to Yang
         made by Olof Hagsand manually for the Clixon project.
         RFC 5277 is Copyright (C) The IETF Trust (2008).";

    revision 2008-07-01 {
	description
	    "Initial revision.";
	reference
	    "RFC 5277: NETCONF Event Notifications.";
    }

    container netconf {
	config false;
	description
	    "Contains NETCONF protocol monitoring information.";

	container capabilities {
	    description
		"Contains a list of protocol capability URIs.";

	    leaf-list capability {
		type inet:uri;
		description
		    "A RESTCONF protocol capability URI.";
	    }
	}

	container streams {
	    description
		"Container representing the notification event streams
            supported by the server.";
	    reference
		"RFC 5277, Section 3.4, <streams> element.";
	    list stream {
		key name;
		description
		    "Each entry describes an event stream supported by
              the server.";

		leaf name {
		    type string;
		    description
			"The stream name.";
		    reference
			"RFC 5277, Section 3.4, <name> element.";
		}

		leaf description {
		    type string;
		    description
			"Description of stream content.";
		    reference
			"RFC 5277, Section 3.4, <description> element.";
		}

		leaf replay-support {
		    type boolean;
		    default false;
		    description
			"Indicates if replay buffer is supported for this stream.
                If 'true', then the server MUST support the 'start-time'
                and 'stop-time' query parameters for this stream.";
		    reference
			"RFC 5277, Section 3.4, <replaySupport> element.";
		}

		leaf replay-log-creation-time {
		    when "../replay-support" {
			description
			    "Only present if notification replay is supported.";
		    }
		    type yang:date-and-time;
		    description
			"Indicates the time the replay log for this stream
                was created.";
		    reference
			"RFC 5277, Section 3.4, <replayLogCreationTime>
                element.";
		}

	    }
	}
    }
    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.";
      reference "RFC 5277, Section 2.1";
      input {
	  leaf stream{
	      type string;
	      default "NETCONF";
	      description "An optional parameter, <stream>, that indicates which
                stream of events is of interest.  If not present, events in the
                default NETCONF stream will be sent.";
	  }
  	  leaf filter{
	      type string;
	      description "An optional parameter, <filter>, 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.  See section 3.6
               for more information on filters";
	  }
	  leaf startTime {
	      type yang:date-and-time;
	      description "used to trigger the replay feature
         and indicate that the replay should start at the time
         specified. If <startTime> is not present, this is not a replay
         subscription.";
	  }
	  leaf stopTime {
	      type yang:date-and-time;
	      description "used with the optional
         replay feature to indicate the newest notifications of
         interest.  If <stopTime> is not present, the notifications will
         continue until the subscription is terminated.";
	  }
      }
    }
}
