{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/interfibra-it/json-schema/interfibra-it-buono-open-fiber-elenco-schema.json",
  "title": "BuonoOpenFiberElenco",
  "description": "L'iniziativa «La Fibra che ti premia» di Open Fiber, a cui Interfibra aderisce, e i suoi comuni. Il buono lo eroga Open Fiber, alle sue condizioni. Il comune in elenco non basta: al civico vale solo con la fibra FTTH di Open Fiber, e lo dice la verifica di copertura.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/interfibra-it-openapi.json#/components/schemas/BuonoOpenFiberElenco",
  "type": "object",
  "properties": {
    "iniziativa": {
      "type": "string"
    },
    "promotore": {
      "type": "string",
      "enum": [
        "Open Fiber"
      ]
    },
    "attiva": {
      "type": "boolean",
      "description": "false: iniziativa finita o sospesa. Allora ci sono solo stato ed esito, nessun comune: non proporre il buono."
    },
    "stato": {
      "type": "string",
      "enum": [
        "attiva",
        "terminata",
        "non_attiva"
      ]
    },
    "interfibraAderisce": {
      "type": "boolean"
    },
    "esito": {
      "type": "string",
      "description": "La risposta alla domanda in una frase: se il comune è in elenco, quanti comuni ha la provincia o la regione, o lo stato dell'iniziativa."
    },
    "importoEur": {
      "type": "number"
    },
    "descrizione": {
      "type": "string"
    },
    "attivazioniDal": {
      "type": "string",
      "format": "date",
      "description": "Attivazione richiesta e ottenuta da questo giorno…"
    },
    "attivazioniEntro": {
      "type": "string",
      "format": "date",
      "description": "…a questo."
    },
    "richiestaEntro": {
      "type": "string",
      "format": "date",
      "description": "Il buono si richiede a Open Fiber entro questo giorno."
    },
    "condizioni": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "prossimoPasso": {
      "type": "string",
      "description": "Come si sa se il buono vale al civico: la verifica di copertura."
    },
    "regolamento": {
      "type": "string",
      "format": "uri"
    },
    "paginaElenco": {
      "type": "string",
      "format": "uri",
      "description": "La pagina del sito con tutti i comuni dell'iniziativa, per regione e provincia."
    },
    "filtri": {
      "type": "object",
      "description": "I parametri ricevuti, ripuliti.",
      "properties": {
        "comune": {
          "type": "string"
        },
        "provincia": {
          "type": "string"
        },
        "regione": {
          "type": "string"
        }
      }
    },
    "inElenco": {
      "type": "boolean",
      "description": "Solo con comune: true se quel comune è nell'elenco."
    },
    "numeroComuni": {
      "type": "integer",
      "description": "Comuni nella risposta."
    },
    "regioni": {
      "type": "array",
      "description": "I comuni chiesti, per regione e provincia.",
      "items": {
        "type": "object",
        "properties": {
          "regione": {
            "type": "string"
          },
          "numeroComuni": {
            "type": "integer"
          },
          "province": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "provincia": {
                  "type": "string"
                },
                "sigla": {
                  "type": "string"
                },
                "comuni": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "nome": {
                        "type": "string"
                      },
                      "pagina": {
                        "type": "string",
                        "format": "uri",
                        "description": "La pagina del comune sul sito, dove c'è."
                      }
                    },
                    "required": [
                      "nome"
                    ]
                  }
                }
              },
              "required": [
                "provincia",
                "sigla",
                "comuni"
              ]
            }
          }
        },
        "required": [
          "regione",
          "numeroComuni",
          "province"
        ]
      }
    },
    "simili": {
      "type": "array",
      "description": "Con un comune che non è in elenco: comuni dell'elenco con un nome simile, da confermare col cliente.",
      "items": {
        "$ref": "#/$defs/ComuneBuono"
      }
    }
  },
  "required": [
    "iniziativa",
    "promotore",
    "attiva",
    "stato",
    "esito"
  ],
  "$defs": {
    "ComuneBuono": {
      "type": "object",
      "properties": {
        "nome": {
          "type": "string"
        },
        "sigla": {
          "type": "string",
          "description": "Sigla della provincia."
        },
        "provincia": {
          "type": "string"
        },
        "regione": {
          "type": "string"
        },
        "pagina": {
          "type": "string",
          "format": "uri"
        }
      },
      "required": [
        "nome",
        "sigla",
        "provincia",
        "regione"
      ]
    }
  }
}