Decide about "list-case" or "camelCase" in schema.
[oam.git] / code / network-generator / network_generation / model / jsonSchema / configuration.schema.json
1 {
2   "$schema": "https://json-schema.org/draft/2020-12/schema",
3   "$id": "https://highstreet-technologies.com/network-generator/configuration.schema.json",
4   "title": "Configuration",
5   "description": "This schema validates the initial configuration for the network generator application.",
6   "type": "object",
7   "required": [
8     "network",
9     "outputFolder",
10     "generationTasks"
11   ],
12   "additionalProperties": false,
13   "properties": {
14     "network": {
15       "description": "Defines the network and its topology to be generated.",
16       "$ref": "#/$defs/network"
17     },
18     "outputFolder": {
19       "description": "The relative path (folder name only) of the directory, where the generated files are stored.",
20       "type": "string"
21     },
22     "generationTasks": {
23       "description": "Defines the files to be generated.",
24       "$ref": "#/$defs/generationTasks"
25     }
26   },
27   "$defs": {
28     "network": {
29       "title": "network",
30       "type": "object",
31       "required": [
32         "name",
33         "center",
34         "pattern"
35       ],
36       "additionalProperties": false,
37       "properties": {
38         "name": {
39           "description": "The name as identification for humans. For the pattern explanation, please see: https://regex101.com/r/3ER25H/1",
40           "type": "string",
41           "pattern": "^[a-zA-Z]{1}[\\S]{0,254}$"
42         },
43         "center": {
44           "description": "Defines the geographical center of the Radio Access Network.",
45           "$ref": "#/$defs/geoLocation"
46         },
47         "pattern": {
48           "description": "A description of the relations between O-RAN Objects.",
49           "$ref": "#/$defs/pattern"
50         }
51       }
52     },
53     "geoLocation": {
54       "description": "Describes a geographical location.",
55       "title": "geoLocation",
56       "type": "object",
57       "required": [
58         "latitude",
59         "longitude",
60         "aboveMeanSeaLevel"
61       ],
62       "additionalProperties": false,
63       "properties": {
64         "latitude": {
65           "description": "The latitude of the geographical location in decimal degrees. Please note 0.00001° is about 1.11m.",
66           "type": "number",
67           "minimum": -90,
68           "maximum": 90
69         },
70         "longitude": {
71           "description": "The longitude of the geographical location in decimal degrees. Please note 0.00001° is about 1.11m.",
72           "type": "number",
73           "minimum": -180,
74           "maximum": 180
75         },
76         "aboveMeanSeaLevel": {
77           "description": "The height of the geographical location in meters.",
78           "type": "number",
79           "minimum": -20,
80           "maximum": 1000
81         }
82       }
83     },
84     "pattern": {
85       "description": "A description of the relations between O-RAN Objects.",
86       "title": "pattern",
87       "type": "object",
88       "required": [
89         "tower",
90         "smo",
91         "nearRtRic",
92         "oRanCu",
93         "oRanDu",
94         "oRanRu",
95         "nrCellDu"
96       ],
97       "additionalProperties": false,
98       "properties": {
99         "tower": {
100           "description": "A 'tower' offers mounting positions of O-RUs.",
101           "title": "tower",
102           "type": "object",
103           "required": [
104             "representation"
105           ],
106           "properties": {
107             "representation": {
108               "description": "A fixed value for information only.",
109               "type": "string",
110               "enum": [
111                 "hexagon"
112               ]
113             }
114           }
115         },
116         "smo": {
117           "description": "Definition of the relation to SMO children.",
118           "title": "Service Management and Orchestration",
119           "type": "object",
120           "required": [
121             "fiveGCoreCount",
122             "nearRtRicSpiralRadius",
123             "oCloudResourcePoolCount"
124           ],
125           "properties": {
126             "fiveGCoreCount": {
127               "description": "The number of 5G-Cores controlled by SMO.",
128               "type": "integer",
129               "minimum": 0,
130               "maximum": 1
131             },
132             "nearRtRicSpiralRadius": {
133               "description": "The spiral radius of hexagons within an hexagon grid defines the number of nearRtRics and the geographical coverage of the SMO.",
134               "type": "integer",
135               "minimum": 0,
136               "maximum": 3
137             },
138             "oCloudResourcePoolCount": {
139               "description": "Number of O-RAN O-Cloud resource pools managed by O2-controller of the SMO.",
140               "type": "integer",
141               "enum": [
142                 1,
143                 7,
144                 19,
145                 37
146               ]
147             }
148           }
149         },
150         "nearRtRic": {
151           "description": "Definition of the relation to nearRtRic children.",
152           "title": "nearRtRic",
153           "type": "object",
154           "required": [
155             "oRanCuSpiralRadius"
156           ],
157           "properties": {
158             "oRanCuSpiralRadius": {
159               "description": "The spiral radius of hexagons within a hexagon grid defines the number of O-RAN CUs and the geographical coverage of the SMO.",
160               "type": "integer",
161               "minimum": 0,
162               "maximum": 3
163             }
164           }
165         },
166         "oRanCu": {
167           "description": "Definition of the relation to oRanCu children.",
168           "title": "oRanCu",
169           "type": "object",
170           "required": [
171             "oRanDuSpiralRadius"
172           ],
173           "properties": {
174             "oRanDuSpiralRadius": {
175               "description": "The spiral radius of hexagons within a hexagon grid defines the number of O-RAN DUs and the geographical coverage of the SMO.",
176               "type": "integer",
177               "minimum": 0,
178               "maximum": 3
179             }
180           }
181         },
182         "oRanDu": {
183           "description": "Definition of the relation to oRanDU children.",
184           "title": "oRanDu",
185           "type": "object",
186           "required": [
187             "towerSpiralRadius",
188             "fronthaulGatewayCount",
189             "oRanRuCount"
190           ],
191           "properties": {
192             "towerSpiralRadius": {
193               "description": "The spiral radius of hexagons within an hexagon grid defines the number of towers and the geographical coverage of the oRanDU. This means that center tower offers the O-Cloud resource pool for the surrounding towers and its oRanRus.",
194               "type": "integer",
195               "minimum": 0,
196               "maximum": 3
197             },
198             "fronthaulGatewayCount": {
199               "description": "Number of fronthaul gateway connected to an oRanDU.",
200               "type": "integer",
201               "minimum": 0,
202               "maximum": 1
203             },
204             "oRanRuCount": {
205               "description": "Number of oRanRus managed by an oRanDU.",
206               "type": "integer",
207               "enum": [
208                 1,
209                 7,
210                 19,
211                 37
212               ]
213             }
214           }
215         },
216         "oRanRu": {
217           "description": "Definition of the relation to oRanRu children.",
218           "title": "oRanRu",
219           "type": "object",
220           "required": [
221             "nrCellDuCount"
222           ],
223           "properties": {
224             "nrCellDuCount": {
225               "description": "Number of 3GPP:NRCellDUs managed by an oRanRu.",
226               "type": "integer",
227               "enum": [
228                 1,
229                 3
230               ]
231             }
232           }
233         },
234         "nrCellDu": {
235           "description": "Definition of the relation to 3GPP:NRCellDU children.",
236           "title": "nrCellDu",
237           "type": "object",
238           "required": [
239             "sectorCount",
240             "cellAngle",
241             "cellScaleFactorForHandoverArea",
242             "maxReach"
243           ],
244           "properties": {
245             "sectorCount": {
246               "description": "Number of sectors managed by an 3GPP:NRCellDUs.",
247               "type": "integer",
248               "enum": [
249                 1,
250                 3
251               ]
252             },
253             "cellAngle": {
254               "description": "The area covered by an NRCellDU around the tower in grad.",
255               "type": "integer",
256               "minimum": 0,
257               "maximum": 360,
258               "exclusiveMinimum": 0
259             },
260             "cellScaleFactorForHandoverArea": {
261               "description": "A factor to increase the cell polygon for handover areas in procent [%]",
262               "type": "integer",
263               "minimum": 0,
264               "maximum": 50
265             },
266             "maxReach": {
267               "description": "The maximal distance a UE can reach the cell in meters. The value also defines the radius around a tower where UEs may select a NRCellDU of an oRanRu mounted at this tower.",
268               "type": "integer",
269               "minimum": 15,
270               "maximum": 600
271             }
272           }
273         }
274       }
275     },
276     "generationTasks": {
277       "title": "generationTasks",
278       "type": "object",
279       "required": [
280         "topology",
281         "svg",
282         "kml"
283       ],
284       "additionalProperties": false,
285       "properties": {
286         "topology": {
287           "description": "If true, an ietf-network-topology file will be generated.",
288           "type": "boolean"
289         },
290         "svg": {
291           "description": "If true, a kml file will be generated.",
292           "type": "boolean"
293         },
294         "kml": {
295           "description": "If true, a svg file will be generated.",
296           "type": "boolean"
297         }
298       }
299     }
300   }
301 }