Add xapp onboarder guide document
[it/dev.git] / docs / xapp_onboarder / guide / embedded-schema.json
1 {
2         "$schema": "http://json-schema.org/draft-07/schema#",
3         "$id": "http://o-ran-sc.org/xapp_root.json",
4         "type": "object",
5         "title": "The xApp Root Schema",
6         "required": [
7                 "xapp_name",
8                 "version",
9                 "containers"
10         ],
11         "properties": {
12                 "xapp_name": {
13                         "$id": "#/properties/xapp_name",
14                         "type": "string",
15                         "title": "The xApp Name",
16                         "default": "xapp",
17                         "examples": [
18                                 "example_xapp"
19                         ]
20                 },
21                 "version": {
22                         "$id": "#/properties/version",
23                         "type": "string",
24                         "title": "The xApp version",
25                         "default": "1.0.0",
26                         "examples": [
27                                 "1.0.0"
28                         ],
29                         "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
30                 },
31                 "containers": {
32                         "$id": "#/properties/containers",
33                         "type": "array",
34                         "title": "The Container Schema",
35                         "items": {
36                                 "$id": "#/properties/containers/items",
37                                 "type": "object",
38                                 "title": "The Container Items Schema",
39                                 "required": [
40                                         "name",
41                                         "image"
42                                 ],
43                                 "properties": {
44                                         "name": {
45                                                 "$id": "#/properties/containers/items/properties/name",
46                                                 "type": "string",
47                                                 "title": "The xApp Container Name",
48                                                 "default": "xapp",
49                                                 "examples": [
50                                                         "xapp"
51                                                 ]
52                                         },
53                                         "image": {
54                                                 "$id": "#/properties/containers/items/properties/image",
55                                                 "type": "object",
56                                                 "title": "The Container Image",
57                                                 "required": [
58                                                         "registry",
59                                                         "name",
60                                                         "tag"
61                                                 ],
62                                                 "properties": {
63                                                         "registry": {
64                                                                 "$id": "#/properties/containers/items/properties/image/properties/registry",
65                                                                 "type": "string",
66                                                                 "title": "The xApp Image Registry",
67                                                                 "default": "nexus3.o-ran-sc.org:10002",
68                                                                 "examples": [
69                                                                         "nexus3.o-ran-sc.org:10002"
70                                                                 ],
71                                                                 "pattern": "^[A-Za-z0-9\\.-]{1,}\\.[A-Za-z]{1,}(?:\\:\\d+)?$"
72                                                         },
73                                                         "name": {
74                                                                 "$id": "#/properties/containers/items/properties/image/properties/name",
75                                                                 "type": "string",
76                                                                 "title": "The xApp Image Name",
77                                                                 "default": "xapp",
78                                                                 "examples": [
79                                                                         "xapp"
80                                                                 ]
81                                                         },
82                                                         "tag": {
83                                                                 "$id": "#/properties/containers/items/properties/image/properties/tag",
84                                                                 "type": "string",
85                                                                 "title": "The xApp Image Tag",
86                                                                 "default": "latest",
87                                                                 "examples": [
88                                                                         "latest"
89                                                                 ]
90                                                         }
91                                                 }
92                                         },
93                                         "command": {
94                                                 "$id": "#/properties/containers/items/properties/command",
95                                                 "type": "string",
96                                                 "title": "Command To Run The xApp Container",
97                                                 "default": "command",
98                                                 "examples": [
99                                                         "command"
100                                                 ]
101                                         }
102                                 }
103                         }
104                 },
105         "livenessProbe": {
106                 "$id": "#/properties/livenessprobe",
107             "type": "object",
108                         "title": "The Liveness Probe Definition",
109             "properties": {
110                 "exec": {
111                                         "$id": "#/properties/livenessprobe/exec",
112                     "type": "object",
113                                         "title": "Script of Liveness Probe",
114                     "properties": {
115                          "command": {
116                                                          "$id": "#/properties/livenessprobe/exec/command",
117                              "type": "array",
118                              "items": [
119                                  {
120                                                                         "$id": "#/properties/livenessprobe/exec/command/item",
121                                                                         "type": "string",
122                                                                         "title": "The Command Item",
123                                                                         "default": "/bin/sh",
124                                                                         "examples": [
125                                                                                 "/bin/sh"
126                                                                         ]
127                                  }
128                              ]
129                          }
130                     },
131                     "required": [
132                         "command"
133                     ]
134                 },
135                 "httpGet": {
136                                         "$id": "#/properties/livenessprobe/httpget",
137                     "type": "object",
138                                         "title": "Http of Liveness Probe",
139                     "properties": {
140                          "path": {
141                                                         "$id": "#/properties/livenessprobe/httpget/path",
142                                                         "type": "string",
143                                                         "title": "The Path of Http Liveness Probe",
144                                                         "default": "/health",
145                                                         "examples": [
146                                                                 "/health"
147                                                         ]
148                          },
149                                                  "port": {
150                                                         "$id": "#/properties/livenessprobe/httpget/port",
151                                                         "type": "integer",
152                                                         "title": "The Port of Http Liveness Probe",
153                                                         "default": 80,
154                                                         "examples": [
155                                                                 80
156                                                         ]
157                          }
158                     },
159                     "required": [
160                         "path",
161                                         "port"
162                     ]
163                 },
164                 "initialDelaySeconds": {
165                     "$id": "#/properties/livenessprobe/initialdelayseconds",
166                                         "type": "integer",
167                                         "title": "Initial Delay of Liveness Probe",
168                                         "default": 5,
169                                         "examples": [
170                                                 5
171                                         ]
172                 },
173                 "periodSeconds": {
174                     "$id": "#/properties/livenessprobe/periodseconds",
175                                         "type": "integer",
176                                         "title": "Period of Liveness Probe",
177                                         "default": 15,
178                                         "examples": [
179                                                 15
180                                         ]
181                 }
182             },
183                     "oneOf": [
184                       { 
185                                   "$id": "#/properties/livenessprobe/oneof/exec",
186                                   "required": ["exec", "initialDelaySeconds", "periodSeconds"]
187                           },
188                       { 
189                                   "$id": "#/properties/livenessprobe/oneof/httpget",
190                                   "required": ["httpGet", "initialDelaySeconds", "periodSeconds"]
191                           }
192                     ]
193         },
194         "readinessProbe": {
195                 "$id": "#/properties/readinessprobe",
196             "type": "object",
197                         "title": "The Readiness Probe Definition",
198             "properties": {
199                 "exec": {
200                                         "$id": "#/properties/readinessprobe/exec",
201                     "type": "object",
202                                         "title": "Script of Readiness Probe",
203                     "properties": {
204                          "command": {
205                                                          "$id": "#/properties/readinessprobe/exec/command",
206                              "type": "array",
207                              "items": [
208                                  {
209                                      "type": "string"
210                                  }
211                              ]
212                          }
213                     },
214                     "required": [
215                         "command"
216                     ]
217                 },
218                 "httpGet": {
219                                         "$id": "#/properties/readinessprobe/httpget",
220                     "type": "object",
221                                         "title": "Http of Readiness Probe",
222                     "properties": {
223                          "path": {
224                                                         "$id": "#/properties/readinessprobe/httpget/path",
225                                                         "type": "string",
226                                                         "title": "The Path of Http Readiness Probe",
227                                                         "default": "/health",
228                                                         "examples": [
229                                                                 "/health"
230                                                         ]
231                          },
232                                                  "port": {
233                                                         "$id": "#/properties/readinessprobe/httpget/port",
234                                                         "type": "integer",
235                                                         "title": "The Port of Http Readiness Probe",
236                                                         "default": 80,
237                                                         "examples": [
238                                                                 80
239                                                         ]
240                          }
241                     },
242                     "required": [
243                         "path",
244                                         "port"
245                     ]
246                 },
247                 "initialDelaySeconds": {
248                     "$id": "#/properties/readinessprobe/initialdelayseconds",
249                                         "type": "integer",
250                                         "title": "Initial Delay of Readiness Probe",
251                                         "default": 5,
252                                         "examples": [
253                                                 5
254                                         ]
255                 },
256                 "periodSeconds": {
257                     "$id": "#/properties/readinessprobe/periodseconds",
258                                         "type": "integer",
259                                         "title": "Period of Readiness Probe",
260                                         "default": 15,
261                                         "examples": [
262                                                 15
263                                         ]
264                 }
265             },
266                     "oneOf": [
267                       { 
268                                   "$id": "#/properties/readinessprobe/oneof/exec",
269                                   "required": ["exec", "initialDelaySeconds", "periodSeconds"]
270                           },
271                       { 
272                                   "$id": "#/properties/readinessprobe/oneof/httpget",
273                                   "required": ["httpGet", "initialDelaySeconds", "periodSeconds"]
274                           }
275                     ]
276         },      
277             "messaging": {
278                         "type": "object",
279                         "$id": "#/properties/messaging",
280                         "title": "The Messaging Schema",
281                         "properties": {
282                                 "ports": {
283                                 "$id": "#/properties/messaging/ports",
284                                         "type": "array",
285                                         "title": "The Ports for Messaging",
286                                         "items":{
287                                                 "$id": "#/properties/messaging/ports/items",
288                                                 "type": "object",
289                                                 "title": "The Item of Port",
290                                                 "required": ["name", "container", "port"],              
291                                             "dependencies": {
292                                               "txMessages": ["rxMessages", "policies"],
293                                                   "rxMessages": ["txMessages", "policies"],
294                                                   "policies": ["rxMessages", "txMessages"]
295                                             },
296                                                 "properties": {
297                                                         "name": {
298                                                                 "$id": "#/properties/messaging/ports/items/name",
299                                                                 "type": "string",
300                                                                 "title": "The Name of the Port",
301                                                                 "default": "App",
302                                                                 "examples": [
303                                                                         "App"
304                                                                 ]
305                                                         },
306                                                         "container": {
307                                                                 "$id": "#/properties/messaging/ports/items/container",
308                                                                 "type": "string",
309                                                                 "title": "The Container of the Port",
310                                                                 "default": "xapp",
311                                                                 "examples": [
312                                                                         "xapp"
313                                                                 ]
314                                                         },
315                                                         "port": {
316                                                                 "$id": "#/properties/messaging/ports/items/port",
317                                                                 "type": "integer",
318                                                                 "title": "The Port Number",
319                                                                 "default": 8080,
320                                                                 "examples": [
321                                                                         8080
322                                                                 ]
323                                                         },
324                                                         "description": {
325                                                                 "$id": "#/properties/messaging/ports/items/description",
326                                                                 "type": "string",
327                                                                 "title": "The description for the port",
328                                                                 "default": "port description",
329                                                                 "examples": [
330                                                                         "port description"
331                                                                 ]
332                                                         },
333                                         "txMessages": {
334                                                                 "$id": "#/properties/messaging/ports/items/txmessages",
335                                             "type": "array",
336                                                                 "title": "The txMessage Types",
337                                             "items":{
338                                                                         "$id": "#/properties/messaging/ports/items//txmessages/item",
339                                                                         "type": "string",
340                                                                         "title": "The txMessage Types Item",
341                                                                         "default": "RIC_SUB",
342                                                                         "examples": [
343                                                                                 "RIC_SUB"
344                                                                         ]
345                                                                 }
346                                         },
347                                         "rxMessages": {
348                                                                 "$id": "#/properties/messaging/ports/items/rxmessages",
349                                             "type": "array",
350                                                                 "title": "The rxMessage Types",
351                                             "items":{
352                                                                         "$id": "#/properties/messaging/ports/items/rxmessages/item",
353                                                                         "type": "string",
354                                                                         "title": "The rxMessage Types Item",
355                                                                         "default": "RIC_SUB",
356                                                                         "examples": [
357                                                                                 "RIC_SUB"
358                                                                         ]
359                                                                 }
360                                         },
361                                         "policies": {
362                                                                 "$id": "#/properties/messaging/ports/items/policies",
363                                             "type": "array",
364                                                                 "title": "The Policies Types",
365                                             "items":{
366                                                                         "$id": "#/properties/messaging/ports/items/policies/item",
367                                                                         "type": "integer",
368                                                                         "title": "The Policy Types Item",
369                                                                         "default": 1,
370                                                                         "examples": [
371                                                                                 1
372                                                                         ]
373                                                                 }
374                                         }
375                                                 }
376                                         }
377                                 }
378                         },
379             "required": [
380                 "ports"
381             ]
382                                 
383                 },
384                 "metrics": {
385                         "type": "array",
386                         "$id": "#/properties/metrics",
387                         "title": "The Metrics Schema",
388                         "items": {
389                                 "$id": "#/properties/metrics/items",
390                                 "type": "object",
391                                 "title": "The Metrics Items Schema",
392                                 "required": [
393                                         "objectName",
394                                         "objectInstance",
395                                         "name",
396                                         "type",
397                                         "description"
398                                 ],
399                                 "properties": {
400                                         "objectName": {
401                                                 "$id": "#/properties/metrics/items/objectname",
402                                                 "type": "string",
403                                                 "title": "The Object Name"
404                                         },
405                                         "objectInstance": {
406                                                 "$id": "#/properties/metrics/items/objectinstance",
407                                                 "type": "string",
408                                                 "title": "The Object Instance"
409                                         },
410                                         "name": {
411                                                 "$id": "#/properties/metrics/items/name",
412                                                 "type": "string",
413                                                 "title": "The Object Name"
414                                         },
415                                         "type": {
416                                                 "$id": "#/properties/metrics/items/type",
417                                                 "type": "string",
418                                                 "title": "The Object Type"
419                                         },
420                                         "description": {
421                                                 "$id": "#/properties/metrics/items/description",
422                                                 "type": "string",
423                                                 "title": "The Object Description"
424                                         }
425                                 }
426                         }
427                 },
428                 "controls": {
429                         "required": [
430                                 "__empty_control_section__"
431                         ]
432                 }
433                 
434         }
435 }