{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "podstawa_programowa": {
            "type": "object",
            "properties": {
                "tytul": { "type": "string" },
                "data": { "type": "string", "format": "date" },
                "poz": { "type": "string" },
                "opis": { "type": "string" },
                "miejsce": { "type": "string" },
                "przedmiot": { "type": "string" }
            },
            "required": ["tytul", "data", "poz", "opis", "miejsce", "przedmiot"]
        },
        "autor": { "type": "string" },
        "data": { "type": "string", "format": "date" },
        "wymagania_ogolne": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "nr": { "type": "integer" },
                    "opis": { "type": "string" },
                    "atrybuty": {
                        "type": "object",
                        "properties": {
                            "punkty": { "type": "integer" },
                            "obowiązkowe": { "type": "integer" }
                        },
                        "required": ["punkty", "obowiązkowe"]
                    },
                    "wymagania": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "nr": { "type": "integer" },
                                "opis": { "type": "string" },
                                "atrybuty": {
                                    "type": "object",
                                    "properties": {
                                        "punkty": { "type": "integer" },
                                        "obowiązkowe": { "type": "integer" }
                                    },
                                    "required": ["punkty", "obowiązkowe"]
                                }
                            },
                            "required": ["nr", "opis", "atrybuty"]
                        }
                    }
                },
                "required": ["nr", "opis", "atrybuty", "wymagania"]
            }
        },
        "wymagania_szczegolowe": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "nr": { "type": "integer" },
                    "opis": { "type": "string" },
                    "atrybuty": {
                        "type": "object",
                        "properties": {
                            "punkty": { "type": "integer" },
                            "obowiązkowe": { "type": "integer" }
                        },
                        "required": ["punkty", "obowiązkowe"]
                    },
                    "zakres_podstawowy": {
                        "type": "object",
                        "properties": {
                            "nr": { "type": "integer" },
                            "opis": { "type": "string" },
                            "atrybuty": {
                                "type": "object",
                                "properties": {
                                    "punkty": { "type": "integer" },
                                    "obowiązkowe": { "type": "integer" }
                                },
                                "required": ["punkty", "obowiązkowe"]
                            },
                            "uczen": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "nr": { "type": "integer" },
                                        "opis": { "type": "string" },
                                        "atrybuty": {
                                            "type": "object",
                                            "properties": {
                                                "punkty": { "type": "integer" },
                                                "obowiązkowe": { "type": "integer" }
                                            },
                                            "required": ["punkty", "obowiązkowe"]
                                        },
                                        "podpunkty": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "nr": { "type": "string" },
                                                    "opis": { "type": "string" },
                                                    "atrybuty": {
                                                        "type": "object",
                                                        "properties": {
                                                            "punkty": { "type": "integer" },
                                                            "obowiązkowe": { "type": "integer" }
                                                        },
                                                        "required": ["punkty", "obowiązkowe"]
                                                    }
                                                },
                                                "required": ["nr", "opis", "atrybuty"]
                                            }
                                        }
                                    },
                                    "required": ["nr", "opis", "atrybuty"]
                                }
                            }
                        },
                        "required": ["nr", "opis", "atrybuty", "uczen"]
                    },
                    "zakres_rozszerzony": {
                        "type": "object",
                        "properties": {
                            "nr": { "type": "integer" },
                            "opis": { "type": "string" },
                            "atrybuty": {
                                "type": "object",
                                "properties": {
                                    "punkty": { "type": "integer" },
                                    "obowiązkowe": { "type": "integer" }
                                },
                                "required": ["punkty", "obowiązkowe"]
                            },
                            "uczen": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "nr": { "type": "integer" },
                                        "opis": { "type": "string" },
                                        "atrybuty": {
                                            "type": "object",
                                            "properties": {
                                                "punkty": { "type": "integer" },
                                                "obowiązkowe": { "type": "integer" }
                                            },
                                            "required": ["punkty", "obowiązkowe"]
                                        }
                                    },
                                    "required": ["nr", "opis", "atrybuty"]
                                }
                            }
                        },
                        "required": ["nr", "opis", "atrybuty", "uczen"]
                    }
                },
                "required": ["nr", "opis", "atrybuty", "zakres_podstawowy", "zakres_rozszerzony"]
            }
        }
    },
    "required": ["podstawa_programowa", "autor", "data", "wymagania_ogolne", "wymagania_szczegolowe"]
}

