{ | |
"$schema": "https://json-schema.org/draft/2020-12/schema", | |
"$id": "https://aetheropennetworking.org/roc/chronos-schema.json", | |
"title": "Chronos Config Schema", | |
"description": "A schema for validating the intermediate format for Chronos configuration", | |
"type": "object", | |
"properties": { | |
"sites": { | |
"description": "a collection of sites", | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"site-id": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"image": { | |
"type": "string" | |
}, | |
"small-cells": { | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"small-cell-id": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
} | |
}, | |
"required": [ | |
"small-cell-id", | |
"display-name" | |
] | |
} | |
}, | |
"slices": { | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"slice-id": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"device-groups": { | |
"type": "array", | |
"items": { | |
"type": "string", | |
"uniqueItems": true | |
} | |
}, | |
"applications": { | |
"type": "array", | |
"uniqueItems": true, | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
}, | |
"device-groups": { | |
"type": "array", | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"device-group-id": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"devices": { | |
"type": "array", | |
"items": { | |
"type": "string", | |
"uniqueItems": true | |
} | |
} | |
}, | |
"required": [ | |
"device-group-id", | |
"display-name" | |
] | |
} | |
}, | |
"devices": { | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"serial-number": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"imei": { | |
"type": "string", | |
"maxLength": 20 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"location": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"type": { | |
"type": "string" | |
}, | |
"sim": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"serial-number", | |
"imei", | |
"display-name", | |
"type" | |
] | |
} | |
}, | |
"sims": { | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"iccid": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
} | |
}, | |
"required": [ | |
"iccid" | |
] | |
} | |
} | |
}, | |
"required": [ | |
"site-id", | |
"small-cells", | |
"slices", | |
"device-groups", | |
"devices", | |
"sims" | |
] | |
} | |
}, | |
"applications": { | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"items": { | |
"type": "object", | |
"properties": { | |
"application-id": { | |
"type": "string", | |
"pattern": "^([a-zA-Z0-9\\-\\.-])*$", | |
"minLength": 3 | |
}, | |
"display-name": { | |
"type": "string", | |
"maxLength": 50 | |
} | |
}, | |
"required": [ | |
"application-id", | |
"display-name" | |
] | |
} | |
} | |
}, | |
"required": [ | |
"sites", | |
"applications" | |
] | |
} |