{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/edifiable-fr/json-schema/edifiable-fr-zone-schema.json",
  "title": "Zone",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/edifiable-fr-openapi.json#/components/schemas/Zone",
  "type": "object",
  "required": [
    "url",
    "municipality",
    "zone",
    "rules",
    "answers",
    "articles",
    "page_url",
    "markdown_url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri"
    },
    "municipality": {
      "type": "object",
      "required": [
        "insee",
        "name",
        "department"
      ],
      "properties": {
        "insee": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "department": {
          "type": "string"
        }
      }
    },
    "zone": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "summary": {
          "type": [
            "string",
            "null"
          ]
        },
        "character": {
          "type": [
            "string",
            "null"
          ]
        },
        "sectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Les secteurs du plan (UAa, UAb) dont les regles sont celles de ce chapitre."
        },
        "document": {
          "type": [
            "object",
            "null"
          ]
        },
        "grid": {
          "type": "string",
          "enum": [
            "R123-9",
            "R151"
          ]
        }
      }
    },
    "rules": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "topic",
          "question",
          "article",
          "document_heading",
          "cases",
          "not_regulated",
          "note",
          "incomplete",
          "common",
          "chapter"
        ],
        "properties": {
          "topic": {
            "type": "string",
            "enum": [
              "usage",
              "hauteur",
              "emprise",
              "voie",
              "limites",
              "stationnement",
              "verts"
            ],
            "description": "Cle stable du domaine."
          },
          "question": {
            "type": "string",
            "description": "La question en francais, telle que la page la pose."
          },
          "article": {
            "type": "integer"
          },
          "document_heading": {
            "type": [
              "string",
              "null"
            ],
            "description": "L intitule que le DOCUMENT donne a cet article. Le numero, lui, est celui de la grille du site : c est cet intitule qui se retrouve dans le PDF. Nul quand le document n en donne aucun de lisible."
          },
          "cases": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "when",
                "sentence"
              ],
              "properties": {
                "value": {
                  "type": "string",
                  "description": "Ce qu on lit dans la colonne : « 9 m », « 50 % », « 2 places par logement »."
                },
                "when": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "La condition qui declenche cette valeur. `null` quand elle vaut sans condition."
                },
                "sentence": {
                  "type": "string",
                  "description": "La phrase du reglement qui porte la valeur, retrouvee dans l article au moment de la reponse."
                }
              }
            }
          },
          "not_regulated": {
            "type": "boolean",
            "description": "Le document dit lui-meme qu il ne fixe rien."
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "incomplete": {
            "type": "boolean",
            "description": "Vrai quand au moins un cas n a pas retrouve sa phrase dans le document servi : il n est pas rendu."
          },
          "common": {
            "type": "boolean",
            "description": "Vrai quand la regle vient des dispositions communes a toutes les zones du document, et non du chapitre de la zone : `article` designe alors une rubrique du commun."
          },
          "chapter": {
            "type": [
              "string",
              "null"
            ],
            "description": "Le chapitre de tete dont `article` est une rubrique, quand la regle vient du chapitre qui vaut dans toute la famille de la zone (`U` pour une zone `UC`) ; null sinon."
          }
        }
      },
      "description": "Vide quand la commune n est pas compilee : lire `answers` et `articles`."
    },
    "answers": {
      "type": "array",
      "description": "Une phrase COPIEE par question, quand la commune n est pas compilee. Jamais une valeur synthetisee.",
      "items": {
        "type": "object",
        "properties": {
          "article": {
            "type": "integer"
          },
          "topic": {
            "type": "string"
          },
          "sentence": {
            "type": "string"
          }
        }
      }
    },
    "articles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer"
          },
          "heading": {
            "type": "string",
            "description": "L intitule de la nomenclature, a defaut celui du document."
          },
          "document_heading": {
            "type": [
              "string",
              "null"
            ],
            "description": "L intitule tel que le document l ecrit : c est lui qui est opposable."
          },
          "question": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": "string"
          }
        }
      }
    },
    "page_url": {
      "type": "string",
      "format": "uri"
    },
    "markdown_url": {
      "type": "string",
      "format": "uri"
    },
    "source": {
      "type": "string",
      "description": "D'ou vient la DONNEE. Une citation recopie cette phrase."
    },
    "served_by": {
      "type": "object",
      "description": "Qui a REPONDU. Ne pas confondre avec `source`.",
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "terms": {
      "type": "string"
    },
    "documentation": {
      "type": "string",
      "format": "uri"
    },
    "notice": {
      "type": "string",
      "description": "La retenue : une lecture automatique ne remplace pas le certificat d'urbanisme delivre par la mairie."
    }
  }
}