summaryrefslogtreecommitdiffstats
path: root/tests/modules/yang/ietf-restconf@2017-01-26.yang
blob: b47455b81644ddf810e7e3241cf69cb4d2f975b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
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.";
      }
    }
  }

}