Add geographical location to schema
[oam.git] / code / network-generator / 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     "output-folder",
10     "generation-tasks"
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     "output-folder": {
19       "description": "The relative path (folder name only) of the directory, where the generated files are stored.",
20       "type": "string"
21     },
22     "generation-tasks": {
23       "description": "Defines the files to be generated.",
24       "$ref": "#/$defs/generation-tasks"
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         "near-rt-ric",
92         "o-ran-cu",
93         "o-ran-du",
94         "o-ran-ru",
95         "nr-cell-du"
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             "cellAngle"
106           ],
107           "properties": {
108             "representation": {
109               "description": "A fixed value for information only.",
110               "type": "string",
111               "enum": [
112                 "hexagon"
113               ]
114             },
115             "cellAngle": {
116               "description": "The area covered by an NRCellDU around the tower in grad.",
117               "type": "integer",
118               "minimum": 0,
119               "maximum": 360,
120               "exclusiveMinimum": true
121             }
122           }
123         },
124         "smo": {
125           "description": "Definition of the relation to SMO children.",
126           "title": "Service Management and Orchestration",
127           "type": "object",
128           "required": [
129             "five-g-core-count",
130             "near-rt-ric-spiral-radius",
131             "o-could-resource-pool-count"
132           ],
133           "properties": {
134             "five-g-core-count": {
135               "description": "The number of 5G-Cores controlled by SMO.",
136               "type": "integer",
137               "minimum": 0,
138               "maximum": 1
139             },
140             "near-rt-ric-spiral-radius": {
141               "description": "The spiral radius of hexagons within an hexagon grid defines the number of Near-RT-RICs and the geographical coverage of the SMO.",
142               "type": "integer",
143               "minimum": 0,
144               "maximum": 3
145             },
146             "o-could-resource-pool-count": {
147               "description": "Number of O-RAN O-Cloud resource pools managed by O2-controller of the SMO.",
148               "type": "integer",
149               "enum": [
150                 1,
151                 7,
152                 19,
153                 37
154               ]
155             }
156           }
157         },
158         "near-rt-ric": {
159           "description": "Definition of the relation to Near-RT-Ric children.",
160           "title": "near-rt-ric",
161           "type": "object",
162           "required": [
163             "o-ran-cu-spiral-radius"
164           ],
165           "properties": {
166             "o-ran-cu-spiral-radius": {
167               "description": "The spiral radius of hexagons within an hexagon grid defines the number of O-RAN CUs and the geographical coverage of the SMO.",
168               "type": "integer",
169               "minimum": 0,
170               "maximum": 3
171             }
172           }
173         },
174         "o-ran-cu": {
175           "description": "Definition of the relation to O-RAN-RU children.",
176           "title": "o-ran-cu",
177           "type": "object",
178           "required": [
179             "tower-spiral-radius"
180           ],
181           "properties": {
182             "tower-spiral-radius": {
183               "description": "The spiral radius of hexagons within an hexagon grid defines the number of towers and the geographical coverage of the SMO.",
184               "type": "integer",
185               "minimum": 0,
186               "maximum": 3
187             }
188           }
189         },
190         "o-ran-du": {
191           "description": "Definition of the relation to O-RAN-DU children.",
192           "title": "o-ran-du",
193           "type": "object",
194           "required": [
195             "fronthaul-gateway-count",
196             "o-ran-ru-count"
197           ],
198           "properties": {
199             "fronthaul-gateway-count": {
200               "description": "Number of fronthaul gateway connected to an O-RAN-DU.",
201               "type": "integer",
202               "minimum": 0,
203               "maximum": 1
204             },
205             "o-ran-ru-count": {
206               "description": "Number of O-RAN-RUs managed by an O-RAN-DU.",
207               "type": "integer",
208               "enum": [
209                 1,
210                 7,
211                 19,
212                 37
213               ]
214             }
215           }
216         },
217         "o-ran-ru": {
218           "description": "Definition of the relation to O-RAN-RU children.",
219           "title": "o-ran-ru",
220           "type": "object",
221           "required": [
222             "nr-cell-du-count"
223           ],
224           "properties": {
225             "nr-cell-du-count": {
226               "description": "Number of 3GPP:NRCellDUs managed by an O-RAN-RU.",
227               "type": "integer",
228               "enum": [
229                 1,
230                 3
231               ]
232             }
233           }
234         },
235         "nr-cell-du": {
236           "description": "Definition of the relation to 3GPP:NRCellDU children.",
237           "title": "nr-cell-du",
238           "type": "object",
239           "required": [
240             "sector-count"
241           ],
242           "properties": {
243             "sector-count": {
244               "description": "Number of sectors managed by an 3GPP:NRCellDUs.",
245               "type": "integer",
246               "enum": [
247                 1,
248                 3
249               ]
250             }
251           }
252         }
253       }
254     },
255     "generation-tasks": {
256       "title": "generation-tasks",
257       "type": "object",
258       "required": [
259         "topology",
260         "svg",
261         "kml"
262       ],
263       "additionalProperties": false,
264       "properties": {
265         "topology": {
266           "description": "If true, an ietf-network-topology file will be generated.",
267           "type": "boolean"
268         },
269         "svg": {
270           "description": "If true, a kml file will be generated.",
271           "type": "boolean"
272         },
273         "kml": {
274           "description": "If true, a svg file will be generated.",
275           "type": "boolean"
276         }
277       }
278     }
279   }
280 }