module ietf-restconf {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
  prefix "rc";

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

  contact
    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
     WG List:  <mailto:netconf@ietf.org>

     Author:   Andy Bierman
               <mailto:andy@yumaworks.com>

     Author:   Martin Bjorklund
               <mailto:mbj@tail-f.com>

     Author:   Kent Watsen
               <mailto:kwatsen@juniper.net>";

  description
    "This module contains conceptual YANG specifications
     for basic RESTCONF media type definitions used in
     RESTCONF protocol messages.

     Note that the YANG definitions within this module do not
     represent configuration data of any kind.
     The 'restconf-media-type' YANG extension statement
     provides a normative syntax for XML and JSON
     message-encoding purposes.

     Copyright (c) 2017 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (http://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC 8040; see
     the RFC itself for full legal notices.";

  revision 2017-01-26 {
    description
      "Initial revision.";
    reference
      "RFC 8040: RESTCONF Protocol.";
  }

  extension yang-data {
    argument name {
      yin-element true;
    }
    description
      "This extension is used to specify a YANG data template that
       represents conceptual data defined in YANG.  It is
       intended to describe hierarchical data independent of
       protocol context or specific message-encoding format.
       Data definition statements within a yang-data extension
       specify the generic syntax for the specific YANG data
       template, whose name is the argument of the 'yang-data'
       extension statement.

       Note that this extension does not define a media type.
       A specification using this extension MUST specify the
       message-encoding rules, including the content media type.

       The mandatory 'name' parameter value identifies the YANG
       data template that is being defined.  It contains the
       template name.

       This extension is ignored unless it appears as a top-level
       statement.  It MUST contain data definition statements
       that result in exactly one container data node definition.
       An instance of a YANG data template can thus be translated
       into an XML instance document, whose top-level element
       corresponds to the top-level container.
       The module name and namespace values for the YANG module using
       the extension statement are assigned to instance document data
       conforming to the data definition statements within
       this extension.

       The substatements of this extension MUST follow the
       'data-def-stmt' rule in the YANG ABNF.

       The XPath document root is the extension statement itself,
       such that the child nodes of the document root are
       represented by the data-def-stmt substatements within
       this extension.  This conceptual document is the context
       for the following YANG statements:

         - must-stmt
         - when-stmt
         - path-stmt
         - min-elements-stmt
         - max-elements-stmt
         - mandatory-stmt
         - unique-stmt
         - ordered-by
         - instance-identifier data type

       The following data-def-stmt substatements are constrained
       when used within a 'yang-data' extension statement.

         - The list-stmt is not required to have a key-stmt defined.
         - The if-feature-stmt is ignored if present.
         - The config-stmt is ignored if present.
         - The available identity values for any 'identityref'
           leaf or leaf-list nodes are limited to the module
           containing this extension statement and the modules
           imported into that module.
      ";
  }

  rc:yang-data yang-errors {
    uses errors;
  }

  rc:yang-data yang-api {
    uses restconf;
  }

  grouping errors {
    description
      "A grouping that contains a YANG container
       representing the syntax and semantics of a
       YANG Patch error report within a response message.";

    container errors {
      description
        "Represents an error report returned by the server if
         a request results in an error.";

      list error {
        description
          "An entry containing information about one
           specific error that occurred while processing
           a RESTCONF request.";
        reference
          "RFC 6241, Section 4.3.";

        leaf error-type {
          type enumeration {
            enum transport {
              description
                "The transport layer.";
            }
            enum rpc {
              description
                "The rpc or notification layer.";
            }
            enum protocol {
              description
                "The protocol operation layer.";
            }
            enum application {
              description
                "The server application layer.";
            }
          }
          mandatory true;
          description
            "The protocol layer where the error occurred.";
        }

        leaf error-tag {
          type string;
          mandatory true;
          description
            "The enumerated error-tag.";
        }

        leaf error-app-tag {
          type string;
          description
            "The application-specific error-tag.";
        }

        leaf error-path {
          type instance-identifier;
          description
            "The YANG instance identifier associated
             with the error node.";
        }

        leaf error-message {
          type string;
          description
            "A message describing the error.";
        }

        anydata error-info {
           description
             "This anydata value MUST represent a container with
              zero or more data nodes representing additional
              error information.";
        }
      }
    }
  }

  grouping restconf {
    description
      "Conceptual grouping representing the RESTCONF
       root resource.";

    container restconf {
      description
        "Conceptual container representing the RESTCONF
         root resource.";

      container data {
        description
          "Container representing the datastore resource.
           Represents the conceptual root of all state data
           and configuration data supported by the server.
           The child nodes of this container can be any data
           resources that are defined as top-level data nodes
           from the YANG modules advertised by the server in
           the 'ietf-yang-library' module.";
      }

      container operations {
        description
          "Container for all operation resources.

           Each resource is represented as an empty leaf with the
           name of the RPC operation from the YANG 'rpc' statement.

           For example, the 'system-restart' RPC operation defined
           in the 'ietf-system' module would be represented as
           an empty leaf in the 'ietf-system' namespace.  This is
           a conceptual leaf and will not actually be found in
           the module:

              module ietf-system {
                leaf system-reset {
                  type empty;
                }
              }

           To invoke the 'system-restart' RPC operation:

              POST /restconf/operations/ietf-system:system-restart

           To discover the RPC operations supported by the server:

              GET /restconf/operations

           In XML, the YANG module namespace identifies the module:

             <system-restart
                xmlns='urn:ietf:params:xml:ns:yang:ietf-system'/>

           In JSON, the YANG module name identifies the module:

             { 'ietf-system:system-restart' : [null] }
          ";
      }
      leaf yang-library-version {
        type string {
          pattern '\d{4}-\d{2}-\d{2}';
        }
        config false;
        mandatory true;
        description
          "Identifies the revision date of the 'ietf-yang-library'
           module that is implemented by this RESTCONF server.
           Indicates the year, month, and day in YYYY-MM-DD
           numeric format.";
      }
    }
  }

}
