{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "contracts": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "contractID": {
                        "type": "string"
                    },
                    "tenantID": {
                        "type": "string"
                    },
                    "sliceID": {
                        "type": "string"
                    },
                    "sla": {
                        "type": "string",
                        "pattern": "^(platinum|gold|silver|bronze)$"
                    },
                    "startDate": {
                        "format": "date-time"
                    },
                    "endDate": {
                        "format": "date-time"
                    },
                    "contact": {
                        "format": "email"
                    },
                    "location": {
                        "type": "object",
                        "properties": {
                            "coordinates": {
                                "type": "object",
                                "properties": {
                                    "latitude": {
                                        "type": "number"
                                    },
                                    "longitude": {
                                        "type": "number"
                                    }
                                },
                                "required": [
                                    "latitude",
                                    "longitude"
                                ]
                            },
                            "address": {
                                "type": "object",
                                "properties": {
                                    "street": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "state": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "street",
                                    "city",
                                    "state",
                                    "country"
                                ]
                            }
                        },
                        "required": [
                            "coordinates"
                        ]
                    },
                    "enb": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "enbID": {
                                "type": "string"
                            },
                            "generation": {
                                "type": "string",
                                "pattern": "^[2-5]{1}((\\.5|\\.75|\\.9)?)?g$"
                            },
                            "plmn": {
                                "type": "object",
                                "properties": {
                                    "tra": {
                                        "type": "number"
                                    },
                                    "mcc": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 999
                                    },
                                    "mnc": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 999
                                    }
                                },
                                "required": [
                                    "tra",
                                    "mcc",
                                    "mnc"
                                ]
                            },
                            "nbTx": {
                                "type": "number",
                                "pattern": "^[1-2]$",
                                "minimum": 1,
                                "maximum": 2
                            },
                            "nbRx": {
                                "type": "number",
                                "pattern": "^[1-2]$",
                                "minimum": 1,
                                "maximum": 2
                            },
                            "mme": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "ipv4": {
                                            "format": "ipv4"
                                        },
                                        "ipv6": {
                                            "format": "ipv6"
                                        },
                                        "active": {
                                            "type": "string",
                                            "pattern": "^(yes|no)$"
                                        },
                                        "preference": {
                                            "type": "string",
                                            "pattern": "^(ipv4|ipv6)$"
                                        }
                                    },
                                    "required": [
                                        "ipv4",
                                        "active",
                                        "preference"
                                    ]
                                }
                            }
                        },
                        "required": [
                            "name",
                            "enbID",
                            "generation",
                            "plmn",
                            "nbTx",
                            "nbRx"
                        ]
                    }
                },
                "required": [
                    "tenantID",
                    "sliceID",
                    "sla",
                    "startDate",
                    "endDate",
                    "contact",
                    "location",
                    "enb"
                ]
            }
        }
    },
    "required": [
        "contracts"
    ]
}