{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.sportops.it/formato/schema/atleti.schema.json",
  "title": "Atleti",
  "description": "L'anagrafica degli atleti con tesseramento, certificato medico e consensi. Il codice fiscale è la chiave naturale per riconoscere la stessa persona in un altro sistema.",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": [
          "integer",
          "null"
        ],
        "description": "Identificativo nella piattaforma. Stabile dentro la stessa società; non ha significato altrove."
      },
      "nome": {
        "type": [
          "string",
          "null"
        ],
        "description": "Nome."
      },
      "cognome": {
        "type": [
          "string",
          "null"
        ],
        "description": "Cognome."
      },
      "email": {
        "type": [
          "string",
          "null"
        ],
        "description": "Indirizzo email (può mancare)."
      },
      "telefono": {
        "type": [
          "string",
          "null"
        ],
        "description": "Numero di telefono (può mancare)."
      },
      "codice_fiscale": {
        "type": [
          "string",
          "null"
        ],
        "description": "Codice fiscale: la chiave naturale della persona."
      },
      "data_nascita": {
        "type": [
          "string",
          "null"
        ],
        "format": "date",
        "description": "Data di nascita."
      },
      "luogo_nascita": {
        "type": [
          "string",
          "null"
        ],
        "description": "Comune di nascita."
      },
      "provincia_nascita": {
        "type": [
          "string",
          "null"
        ],
        "description": "Provincia di nascita (sigla)."
      },
      "nazionalita": {
        "type": [
          "string",
          "null"
        ],
        "description": "Nazionalità."
      },
      "sesso": {
        "type": [
          "string",
          "null"
        ],
        "description": "M o F.",
        "enum": [
          "M",
          "F",
          null
        ]
      },
      "indirizzo": {
        "type": [
          "string",
          "null"
        ],
        "description": "Indirizzo di residenza."
      },
      "cap": {
        "type": [
          "string",
          "null"
        ],
        "description": "CAP."
      },
      "citta": {
        "type": [
          "string",
          "null"
        ],
        "description": "Comune di residenza."
      },
      "provincia": {
        "type": [
          "string",
          "null"
        ],
        "description": "Provincia di residenza (sigla)."
      },
      "categoria_id": {
        "type": [
          "integer",
          "null"
        ],
        "description": "Categoria assegnata (→ categorie.id)."
      },
      "categoria": {
        "type": [
          "string",
          "null"
        ],
        "description": "Nome della categoria, per leggere senza incrociare."
      },
      "numero_tessera": {
        "type": [
          "string",
          "null"
        ],
        "description": "Numero di tessera federale."
      },
      "matricola": {
        "type": [
          "string",
          "null"
        ],
        "description": "Matricola federale."
      },
      "tessera_dal": {
        "type": [
          "string",
          "null"
        ],
        "format": "date",
        "description": "Data del tesseramento."
      },
      "tessera_scadenza": {
        "type": [
          "string",
          "null"
        ],
        "format": "date",
        "description": "Scadenza della tessera."
      },
      "certificato_medico_scadenza": {
        "type": [
          "string",
          "null"
        ],
        "format": "date",
        "description": "Scadenza del certificato medico."
      },
      "in_prestito_da": {
        "type": [
          "string",
          "null"
        ],
        "description": "Società di provenienza, se in prestito."
      },
      "attivo": {
        "type": [
          "boolean",
          "null"
        ],
        "description": "Atleta attivo (non archiviato)."
      },
      "archiviato_il": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time",
        "description": "Quando è stato archiviato."
      },
      "note": {
        "type": [
          "string",
          "null"
        ],
        "description": "Note della segreteria."
      },
      "consenso_termini_il": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time",
        "description": "Quando ha accettato i termini d'uso (vuoto = mai)."
      },
      "consenso_privacy_sanitaria_il": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time",
        "description": "Quando ha dato il consenso al trattamento dei dati sanitari."
      },
      "consenso_marketing": {
        "type": [
          "boolean",
          "null"
        ],
        "description": "Consenso alle comunicazioni promozionali."
      }
    },
    "required": [
      "id",
      "nome",
      "cognome",
      "email",
      "telefono",
      "codice_fiscale",
      "data_nascita",
      "luogo_nascita",
      "provincia_nascita",
      "nazionalita",
      "sesso",
      "indirizzo",
      "cap",
      "citta",
      "provincia",
      "categoria_id",
      "categoria",
      "numero_tessera",
      "matricola",
      "tessera_dal",
      "tessera_scadenza",
      "certificato_medico_scadenza",
      "in_prestito_da",
      "attivo",
      "archiviato_il",
      "note",
      "consenso_termini_il",
      "consenso_privacy_sanitaria_il",
      "consenso_marketing"
    ],
    "additionalProperties": false
  }
}