blob: 0db4c4f5667933c3090907732a992fc0c94603c6 [file] [log] [blame]
Václav Kubernát73109382018-09-14 19:52:03 +02001module example-schema {
Václav Kubernáta8789602020-07-20 15:18:19 +02002 yang-version 1.1;
Václav Kubernát73109382018-09-14 19:52:03 +02003 prefix aha;
4 namespace "http://example.com";
5
Václav Kubernátab612e92019-11-26 19:51:31 +01006 import other-module {
7 prefix other;
8 }
9
Václav Kubernátda8e4b92020-02-04 11:56:30 +010010 container inventory {
11 container stuff {
12 presence true;
13 }
14 }
15
Václav Kubernát134d78f2019-09-03 16:42:29 +020016 leaf leafUInt8 {
17 type uint8;
18 }
19
20 leaf leafUInt16 {
21 type uint16;
22 }
23
24 leaf leafUInt32 {
25 type uint32;
26 }
27
28 leaf leafUInt64 {
29 type uint64;
30 }
31
32 leaf leafInt8 {
33 type int8;
34 }
35
36 leaf leafInt16 {
37 type int16;
38 }
39
40 leaf leafInt32 {
Václav Kubernát73109382018-09-14 19:52:03 +020041 type int32;
42 }
43
Václav Kubernát134d78f2019-09-03 16:42:29 +020044 leaf leafInt64 {
45 type int64;
46 }
47
Václav Kubernát73109382018-09-14 19:52:03 +020048 leaf leafString {
49 type string;
50 }
51
52 leaf leafEnum {
53 type enumeration {
54 enum lol;
55 enum data;
56 enum coze;
57 }
58 }
59
60 leaf leafDecimal {
Václav Kubernát9cfcd872020-02-18 12:34:02 +010061 units "nm";
Václav Kubernát73109382018-09-14 19:52:03 +020062 type decimal64 {
63 fraction-digits 9;
64 }
65 }
66
67 container pContainer {
68 presence true;
69 }
70
Václav Kubernát45f4a822019-05-29 21:10:50 +020071 list person {
72 key 'name';
73 leaf name {
74 type string;
75 }
76 }
77
Václav Kubernát3efb5ca2019-10-09 20:07:40 +020078 leaf bossPerson {
79 type leafref {
80 path '../aha:person/name';
81 }
82 }
83
Václav Kubernát2984f442020-02-20 17:43:35 +010084 leaf unionIntString {
85 type union {
86 type int32;
87 type string;
88 }
89 }
90
Václav Kubernát1ae24f42020-12-01 02:32:04 +010091 typedef myType {
92 type int32;
93 description "My type.";
94 }
95
96 leaf typedefedLeaf {
97 type myType;
98 description "This is a typedefed leaf.";
99 }
100
Václav Kubernát7d82da72019-04-11 15:16:38 +0200101 grouping upAndDown {
102 leaf up {
103 type boolean;
104 }
105 leaf down {
106 type boolean;
107 }
108 }
109
110 uses upAndDown;
111
112 container lol {
113 uses upAndDown;
114 }
Jan Kundrát6ee84792020-01-24 01:43:36 +0100115
116 grouping targets_def {
117 list targets {
118 key 'city';
119 leaf city {
120 type string;
121 }
122 }
123 }
124
Václav Kubernáte7248b22020-06-26 15:38:59 +0200125 rpc fire {
126 input {
127 leaf whom {
128 type leafref {
129 path '/aha:person/name';
130 }
131 }
132 }
133 }
134
Jan Kundrát6ee84792020-01-24 01:43:36 +0100135 rpc launch-nukes {
136 input {
137 container payload {
138 leaf kilotons {
139 type uint64;
140 mandatory true;
141 units "kilotons";
142 }
143 }
144 leaf description {
145 type string;
146 }
147 container cities {
148 presence true;
149 uses targets_def;
150 }
151 }
152 output {
153 leaf blast-radius {
154 type uint32;
155 units "m";
156 }
157 leaf actual-yield {
158 type uint64;
159 units "kilotons";
160 }
161 container damaged-places {
162 presence true;
163 uses targets_def;
164 }
165 }
166 }
167
168 rpc noop {}
Václav Kubernátab612e92019-11-26 19:51:31 +0100169
170 list selectedNumbers {
171 key 'value';
172 leaf value {
173 type int8;
174 }
175 }
176
177 list animalWithColor {
178 key 'name color';
179 leaf name {
180 type string;
181 }
182 leaf color {
183 type string;
184 }
185 }
186
187 list ports {
188 key 'name';
189 leaf name {
190 type enumeration {
191 enum A;
192 enum B;
193 enum C;
194 enum D;
195 enum E;
196 }
197 }
Václav Kubernáta8789602020-07-20 15:18:19 +0200198
199 action shutdown {
200 output {
201 leaf success {
202 mandatory true;
203 type boolean;
204 }
205 }
206 }
Václav Kubernátab612e92019-11-26 19:51:31 +0100207 }
208
209 list org {
210 key 'department';
211 leaf department {
212 type string;
213 }
214
215 list people {
216 key 'name';
217 leaf name {
218 type string;
219 }
220
221 list computers {
222 key 'type';
223 leaf type {
224 type enumeration {
225 enum PC;
226 enum laptop;
227 enum server;
228 }
229 }
230 }
231 }
232 }
233
234 augment "/other:parking-lot" {
235 list cars {
236 key 'id';
237 leaf id {
238 type int32;
239 }
240 }
241 }
Jan Kundrátbb525b42020-02-04 11:56:59 +0100242
243 leaf temperature {
244 type int32;
245 config false;
246 }
Jan Kundrát0d8abd12020-05-07 02:00:14 +0200247
248 identity Animal {
249 }
250
251 identity Mammal {
252 base "Animal";
253 }
254
255 identity Dog {
256 base "Mammal";
257 }
258
259 identity Whale {
260 base "Mammal";
261 }
262
263 identity Velociraptor {
264 base "Animal";
265 }
266
267 leaf beast {
268 type identityref {
269 base "Animal";
270 }
271 }
Jan Kundrát68985442020-05-07 02:15:34 +0200272
273 leaf blob {
274 type binary;
275 }
Jan Kundrát379bb572020-05-07 03:23:13 +0200276
277 leaf dummy {
278 type empty;
279 }
Václav Kubernát5b8a8f32020-05-20 00:57:22 +0200280
281 leaf-list addresses {
282 type string;
283 }
Václav Kubernátbf65dd72020-05-28 02:32:31 +0200284
285 leaf-list protocols {
286 type string;
287 ordered-by user;
288 }
289
290 list players {
291 key "name";
292 ordered-by user;
293 leaf name {
294 type string;
295 }
296 }
Václav Kubernát70d7f7a2020-06-23 14:40:40 +0200297
298 list point {
299 key "x y";
300 leaf x {
301 type int32;
302 }
303 leaf y {
304 type int32;
305 }
306 }
Václav Kubernát19097f32020-10-05 10:08:29 +0200307
308 leaf flags {
309 type bits {
310 bit carry;
311 bit zero;
312 bit sign;
313 bit parity;
314 }
315 }
Václav Kubernátf90a0b52020-11-06 05:53:03 +0100316
317 container users {
318 config false;
319 list userList {
320 leaf name {
321 type string;
322 }
323 leaf otherfield {
324 type string;
325 }
326 }
327 }
328
Václav Kubernát73109382018-09-14 19:52:03 +0200329}