| 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."; |
| } |
| } |
| } |
| |
| } |