{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/woz-api-nl/json-schema/woz-api-nl-lijst-antwoord-schema.json",
  "title": "LijstAntwoord",
  "description": "De stand van een lijst. Elk veld dat in deze stand niets zegt, ontbreekt.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/woz-api-nl-openapi.json#/components/schemas/LijstAntwoord",
  "type": "object",
  "properties": {
    "token": {
      "type": [
        "string",
        "null"
      ],
      "description": "Het token van de lijst: wie het heeft, kan de lijst lezen en betalen. Niet in een URL voor derden zetten."
    },
    "status": {
      "type": [
        "string",
        "null"
      ],
      "description": "kolommen_kiezen, proef_bezig, niets_herkend, wacht_op_betaling, bezig, klaar of mislukt."
    },
    "volgendeStap": {
      "$ref": "#/$defs/LijstVolgendeStap"
    },
    "avg": {
      "type": [
        "string",
        "null"
      ],
      "description": "Hoe de gebruiker met de uitkomst omgaat."
    },
    "aantallen": {
      "$ref": "#/$defs/LijstAantallen"
    },
    "proef": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/LijstProefRij"
      }
    },
    "prijs": {
      "$ref": "#/$defs/LijstPrijs"
    },
    "betaling": {
      "$ref": "#/$defs/LijstBetaling"
    },
    "voortgang": {
      "$ref": "#/$defs/LijstVoortgang"
    },
    "kolommen": {
      "$ref": "#/$defs/LijstKolommen"
    },
    "links": {
      "$ref": "#/$defs/LijstLinks"
    },
    "volgendeControleNaSeconden": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Na zoveel seconden is er waarschijnlijk iets veranderd; leeg als er niets te wachten valt.",
      "format": "int32"
    },
    "aangemaaktOp": {
      "type": "string",
      "format": "date-time"
    },
    "geleverdOp": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "apiToegangTot": {
      "type": [
        "string",
        "null"
      ],
      "description": "Tot wanneer de API deze lijst nog toont; de link uit de bezorgmail blijft daarna werken.",
      "format": "date-time"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "LijstAantallen": {
      "type": "object",
      "properties": {
        "rijen": {
          "type": "integer",
          "description": "Regels in de lijst, lege meegeteld.",
          "format": "int32"
        },
        "uniek": {
          "type": "integer",
          "description": "Verschillende adressen; een dubbel adres telt en kost een keer.",
          "format": "int32"
        },
        "herkend": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "nietGevonden": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "geenWoz": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "mislukt": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "gevonden": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Met een WOZ-waarde in het resultaat; pas na de verwerking.",
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "LijstBetaling": {
      "type": "object",
      "properties": {
        "betaalUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "De pagina waar de gebruiker de proef ziet en zelf met iDEAL betaalt. Openen start nog geen betaling."
        },
        "emailBekend": {
          "type": "boolean",
          "description": "Of er al een e-mailadres voor de levering is; zo niet, dan vraagt de betaalpagina erom."
        },
        "uitleg": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "LijstKolom": {
      "type": "object",
      "properties": {
        "index": {
          "type": "integer",
          "format": "int32"
        },
        "naam": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "LijstKolomKeuze": {
      "type": "object",
      "properties": {
        "adres": {
          "type": [
            "integer",
            "null"
          ],
          "description": "De kolom met het hele adres. Dan zoeken wij de postcode- en plaatskolom erbij.",
          "format": "int32"
        },
        "straat": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "huisnummer": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "huisletter": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "toevoeging": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "postcode": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "plaats": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "kopregel": {
          "type": [
            "integer",
            "null"
          ],
          "description": "De rij met kolomnamen (vanaf 0), of -1 als het bestand er geen heeft. Leeg: zoals we hem vonden.",
          "format": "int32"
        },
        "vastePlaats": {
          "type": [
            "string",
            "null"
          ],
          "description": "De plaats voor alle adressen, als het bestand geen postcode en geen plaats heeft."
        }
      },
      "additionalProperties": false,
      "description": "De kolomkeuze bij een bestand waarvan we de adreskolom niet zeker wisten. Kolommen tellen vanaf 0."
    },
    "LijstKolommen": {
      "type": "object",
      "properties": {
        "lijst": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/LijstKolom"
          }
        },
        "voorbeeld": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": "De eerste regels onder de kop, om de kolom te kunnen kiezen."
        },
        "voorstel": {
          "$ref": "#/$defs/LijstKolomKeuze"
        },
        "plaatsNodig": {
          "type": "boolean",
          "description": "Of het bestand geen postcode en geen plaats heeft; geef dan vastePlaats mee."
        }
      },
      "additionalProperties": false,
      "description": "Bij een bestand waarvan we de adreskolom niet zeker wisten: de kolommen en een paar regels."
    },
    "LijstLinks": {
      "type": "object",
      "properties": {
        "status": {
          "type": [
            "string",
            "null"
          ],
          "description": "Deze stand opnieuw opvragen."
        },
        "pagina": {
          "type": [
            "string",
            "null"
          ],
          "description": "De pagina voor de gebruiker zelf, met proef, betalen en download."
        },
        "kolommen": {
          "type": [
            "string",
            "null"
          ]
        },
        "betaallink": {
          "type": [
            "string",
            "null"
          ]
        },
        "resultaten": {
          "type": [
            "string",
            "null"
          ]
        },
        "download": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "LijstPrijs": {
      "type": "object",
      "properties": {
        "adressen": {
          "type": "integer",
          "description": "Het aantal adressen dat de gebruiker betaalt: alle herkende, de proefadressen inbegrepen.",
          "format": "int32"
        },
        "prijsPerAdresExclBtw": {
          "type": [
            "number",
            "null"
          ],
          "format": "double"
        },
        "exclBtw": {
          "type": "number",
          "format": "double"
        },
        "btw": {
          "type": "number",
          "format": "double"
        },
        "inclBtw": {
          "type": "number",
          "format": "double"
        },
        "valuta": {
          "type": [
            "string",
            "null"
          ]
        },
        "uitleg": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "LijstProefRij": {
      "type": "object",
      "properties": {
        "rij": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Positie in de lijst, vanaf 1; leeg bij een proef van voor 27 september 2026.",
          "format": "int32"
        },
        "invoer": {
          "type": [
            "string",
            "null"
          ]
        },
        "adres": {
          "type": [
            "string",
            "null"
          ],
          "description": "Het adres zoals wij het vonden."
        },
        "status": {
          "type": [
            "string",
            "null"
          ],
          "description": "gevonden, geen_woz, niet_gevonden of mislukt."
        },
        "wozWaarde": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64"
        },
        "wozJaar": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Het belastingjaar van die waarde: peildatum 1 januari 2025 is WOZ-jaar 2026.",
          "format": "int32"
        },
        "peildatum": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false,
      "description": "Een rij uit de gratis proef."
    },
    "LijstVolgendeStap": {
      "type": "object",
      "properties": {
        "code": {
          "type": [
            "string",
            "null"
          ],
          "description": "Vaste code om op te beslissen: kolom_kiezen, wachten, niets_herkend, betaallink_geven, verwerken, klaar, mislukt."
        },
        "tekst": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "LijstVoortgang": {
      "type": "object",
      "properties": {
        "verwerkt": {
          "type": "integer",
          "format": "int32"
        },
        "totaal": {
          "type": "integer",
          "format": "int32"
        },
        "geschatKlaarOp": {
          "type": [
            "string",
            "null"
          ],
          "description": "Een schatting; lijsten worden een voor een verwerkt.",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    }
  }
}