woz-api-nl Lijst API

Een hele lijst adressen of een Excel in een keer: een gratis proef van 5 adressen, de prijs en een betaallink, en na betaling de rijen en het bestand.

Operations 7

POST /Api/Lijst Een nieuwe lijst, uit adressen of een bestand #
POST /Api/Lijst/Upload Een nieuwe lijst uit een bestand, als multipart-upload #
GET /Api/Lijst/{token} De stand van een lijst #
POST /Api/Lijst/{token}/Kolommen De kolommen van een bestand kiezen #
GET /Api/Lijst/{token}/Resultaten De rijen van een geleverde lijst #
GET /Api/Lijst/{token}/Download Het bestand van een geleverde lijst, met de WOZ-kolommen erbij #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/woz-api-nl:woz-api-nl-lijst-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

woz-api-nl-lijst-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wozapi Lijst API
  description: 'De WOZ API die je zelf regelt. WOZ-waarden, BAG-adresgegevens met bouwjaar en oppervlakte, WOZ-object en kadastrale percelen uit 1 endpoint. Met `energielabel=true` ook het geregistreerde energielabel (EP-Online van RVO), zonder extra credit.


    **Base URL:** `https://woz-api.nl`


    **Authenticatie:** stuur je key mee als header `X-Api-Key: {key}` of als `Authorization: ApiKey {key}`. Een key maak je aan onder API sleutels. Een sleutel hoort in een header, nooit in een URL.


    **Voor softwareleveranciers (OAuth-koppeling):** laat je klant zijn eigen Wozapi-account koppelen via OAuth 2.0 (authorization code met PKCE) en stuur diens access token mee als `Authorization: Bearer {token}`. De credits gaan dan van het account van je klant af. Scopes: `woz.lookup` en `account.saldo`. Discovery: `/.well-known/openid-configuration`. Uitleg en aanvraag: woz-api.nl/woz-api-koppeling.


    **Credits:** 1 credit is 1 uniek adres. Hetzelfde adres binnen 7 dagen opnieuw opvragen kost geen extra credit; dat is een kortingsregel en geen cache, de request wordt wel echt uitgevoerd. Een opvraging die op een fout eindigt (4xx of 5xx) kost niets, en een antwoord zonder WOZ-waarden (een lege `woz`) ook niet. Een nieuw account krijgt 10 gratis credits. Het resterende saldo staat in de response-header `X-Credits-Remaining` en is ook op te vragen via `GET /Api/Credits`. Is het saldo op, dan volgt 402 met code `InsufficientCredits`.


    **Zonder account:** vraag een gratis proefsleutel aan met `POST /Api/Proef` (5 unieke adressen, 10 met het e-mailadres van de gebruiker) en stuur hem mee als `X-Api-Key`. Zonder sleutel geeft de API 401 met code `SleutelOntbreekt`; een verbruikte proef geeft 402 met code `ProefVerbruikt`.


    **Een hele lijst:** `POST /Api/Lijst` met de adressen geeft een gratis proef van 5 adressen, de prijs voor de hele lijst en een betaalpagina voor de gebruiker; na betaling de rijen en het bestand.


    **AI-assistenten:** een MCP-server op `https://woz-api.nl/Api/Mcp`, en uitleg voor agents op woz-api.nl/voor-ai-agents.


    **Foutvorm:** elke fout geeft `{ fout, code, status, detail, traceId }` terug, zie het schema ApiFoutResponse. Dat geldt ook voor een 400 door modelvalidatie; `detail` bevat dan per veld de meldingen. Match in code op `code`, niet op de tekst in `fout`. Veelvoorkomende codes: `InvalidInput` (400), `Unauthorized` (401), `InsufficientCredits` (402), `AddressNotFound` (404), `PdokLookupFailed` (502) en `UpstreamUnavailable` (503). Een 502 of 503 kost niets; probeer het opnieuw, bij een 503 na het aantal seconden uit de header `Retry-After`, en sla het adres niet over.


    **Geen WOZ-waarde:** alleen van woningen is de WOZ-waarde openbaar. Bestaat het adres maar is er geen openbare waarde, bijvoorbeeld bij een kantoor of kerk, dan krijg je een 200 met een lege `woz`, `huidigeWaarde: null` en in `wozStatus` de reden: `geen_woning` als het pand volgens de BAG geen woonfunctie heeft, anders `geen_waarde`. Dat is een antwoord en geen storing: opnieuw proberen verandert niets, en het kost geen credit. Een storing geeft altijd een 502 of 503.


    **Voorbeeld:**


    ```

    curl "https://woz-api.nl/Api/Adres?adres=Spuistraat%2036C,%201012TT%20Amsterdam" \

    -H "X-Api-Key: JOUW_API_KEY"

    ```'
  termsOfService: https://woz-api.nl/terms
  contact:
    name: Wozapi
    url: https://woz-api.nl/
    email: info@woz-api.nl
  version: v1
servers:
- url: https://woz-api.nl
  description: Productie
security:
- ApiKey: []
tags:
- name: Lijst
  description: 'Een hele lijst adressen of een Excel in een keer: een gratis proef van 5 adressen, de prijs en een betaallink, en na betaling de rijen en het bestand.'
paths:
  /Api/Lijst:
    post:
      tags:
      - Lijst
      summary: Een nieuwe lijst, uit adressen of een bestand
      description: 'Geef de adressen mee in `adressen`, elk als tekst ("Spuistraat 36C, 1012 TT Amsterdam") of als

        object met straat, huisnummer, huisletter, toevoeging, postcode en plaats; `ref` en `jaar`

        per adres mogen erbij. Of stuur een Excel- of CSV-bestand in base64 in `bestand`, met

        `bestandsnaam`. Hebben de adressen geen postcode of plaats, geef dan `plaats` mee.


        Daarna loopt de gratis proef: we zoeken alle adressen op en vragen er vijf op. Vraag de stand op

        met GET op links.status, met ?wacht=20 om te wachten tot hij klaar is. Dezelfde lijst binnen een

        uur opnieuw sturen geeft dezelfde lijst terug.'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LijstAanvraag'
          text/json:
            schema:
              $ref: '#/components/schemas/LijstAanvraag'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LijstAanvraag'
      responses:
        '200':
          description: De lijst en zijn stand.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LijstAntwoord'
        '400':
          description: Onbruikbare invoer (InvalidInput, TeVeelAdressen, EmailOngeldig).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '401':
          description: Geen sleutel in de header (SleutelOntbreekt) of een verlopen proefsleutel (SleutelVerlopen).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '403':
          description: Een OAuth-token (ScopeOntbreekt).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '429':
          description: Vandaag al genoeg lijsten met deze sleutel, of de gratis proeven zijn vol (TeVeelLijsten).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: postApiLijst
      x-operation-id-source: derived
  /Api/Lijst/Upload:
    post:
      tags:
      - Lijst
      summary: Een nieuwe lijst uit een bestand, als multipart-upload
      description: Het veld `bestand` met een .xlsx, .xls of .csv; `plaats` en `email` mogen erbij.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                bestand:
                  type: string
                  format: binary
                plaats:
                  type: string
                email:
                  type: string
            encoding:
              bestand:
                style: form
              plaats:
                style: form
              email:
                style: form
      responses:
        '200':
          description: De lijst en zijn stand.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LijstAntwoord'
        '400':
          description: Geen of een onleesbaar bestand.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '401':
          description: Geen sleutel in de header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: postApiLijstUpload
      x-operation-id-source: derived
  /Api/Lijst/{token}:
    get:
      tags:
      - Lijst
      summary: De stand van een lijst
      description: 'Met `wacht` (hoogstens 25 seconden) wacht de aanroep tot de proef of de verwerking verder is,

        zodat je niet hoeft te blijven vragen. Wie het token heeft, kan de lijst lezen: geef het alleen

        aan de gebruiker.'
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
      - name: wacht
        in: query
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        '200':
          description: De stand.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LijstAntwoord'
        '404':
          description: Deze lijst bestaat niet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '410':
          description: De API-toegang tot deze lijst is verlopen (LijstVerlopen).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: getApiLijstByToken
      x-operation-id-source: derived
  /Api/Lijst/{token}/Kolommen:
    post:
      tags:
      - Lijst
      summary: De kolommen van een bestand kiezen
      description: 'Alleen nodig bij status kolommen_kiezen. Kolommen tellen vanaf 0 (kolommen.lijst). Kies je alleen

        `adres`, dan zoeken wij de postcode- en plaatskolom erbij. Zonder postcode en plaats in het

        bestand: geef `vastePlaats` mee.'
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LijstKolomKeuze'
          text/json:
            schema:
              $ref: '#/components/schemas/LijstKolomKeuze'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LijstKolomKeuze'
      responses:
        '200':
          description: De nieuwe stand; de proef begint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LijstAntwoord'
        '400':
          description: Een kolom die niet bestaat, of een kolom zonder adressen.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '409':
          description: De kolommen liggen al vast (LijstNietKlaar, LijstAlBetaald).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: postApiLijstByTokenKolommen
      x-operation-id-source: derived
  /Api/Lijst/{token}/Betaallink:
    post:
      tags:
      - Lijst
      summary: De betaallink van een lijst
      description: 'Bij status wacht_op_betaling. Geeft de pagina waar de gebruiker de proef en de prijs ziet en zelf

        met iDEAL betaalt; openen start nog geen betaling. Met `email` staat het eigen e-mailadres van

        de gebruiker daar al ingevuld: daar komen het bestand en de factuur. Verzin nooit een e-mailadres.'
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LijstBetaallinkAanvraag'
          text/json:
            schema:
              $ref: '#/components/schemas/LijstBetaallinkAanvraag'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LijstBetaallinkAanvraag'
      responses:
        '200':
          description: De stand met betaling.betaalUrl.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LijstAntwoord'
        '400':
          description: Een onbruikbaar e-mailadres (EmailOngeldig).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '409':
          description: Er valt (nog) niets te betalen (LijstNietBetaalbaar), of er is al betaald (LijstAlBetaald).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: postApiLijstByTokenBetaallink
      x-operation-id-source: derived
  /Api/Lijst/{token}/Resultaten:
    get:
      tags:
      - Lijst
      summary: De rijen van een geleverde lijst
      description: In de volgorde van de invoer, hoogstens 500 per pagina; `volgende` wijst naar de volgende pagina.
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
      - name: vanaf
        in: query
        schema:
          type: integer
          format: int32
          default: 0
      - name: aantal
        in: query
        schema:
          type: integer
          format: int32
          default: 100
      responses:
        '200':
          description: Een pagina rijen.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LijstResultaten'
        '409':
          description: Nog niet betaald en verwerkt (LijstNietKlaar).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '410':
          description: De API-toegang is verlopen (LijstVerlopen).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: getApiLijstByTokenResultaten
      x-operation-id-source: derived
  /Api/Lijst/{token}/Download:
    get:
      tags:
      - Lijst
      summary: Het bestand van een geleverde lijst, met de WOZ-kolommen erbij
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Het bestand.
        '409':
          description: Nog niet betaald en verwerkt (LijstNietKlaar).
          content:
            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
            text/csv:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
        '410':
          description: Niet meer beschikbaar (LijstVerlopen).
          content:
            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
            text/csv:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiFoutResponse'
      operationId: getApiLijstByTokenDownload
      x-operation-id-source: derived
components:
  schemas:
    LijstBetaallinkAanvraag:
      type: object
      properties:
        email:
          type:
          - string
          - 'null'
      additionalProperties: false
      description: Het e-mailadres voor de levering bij het opvragen van de betaallink.
    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
    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.
    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.
    LijstKolom:
      type: object
      properties:
        index:
          type: integer
          format: int32
        naam:
          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
    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
    LijstKolommen:
      type: object
      properties:
        lijst:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/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: '#/components/schemas/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.'
    LijstResultaatRij:
      type: object
      properties:
        rij:
          type: integer
          description: Positie in de lijst, vanaf 1. Een lege regel uit de invoer staat er niet in.
          format: int32
        invoer:
          type:
          - string
          - 'null'
        adres:
          type:
          - string
          - 'null'
        status:
          type:
          - string
          - 'null'
          description: gevonden, geen_woz, niet_gevonden of mislukt.
        wozWaarde:
          type:
          - integer
          - 'null'
          format: int64
        wozJaar:
          type:
          - integer
          - 'null'
          format: int32
        peildatum:
          type:
          - string
          - 'null'
        oppervlakte:
          type:
          - integer
          - 'null'
          format: int32
        historie:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/LijstHistorieWaarde'
          description: Eerdere WOZ-waarden van dit adres, nieuwste eerst.
      additionalProperties: false
    LijstResultaten:
      type: object
      properties:
        token:
          type:
          - string
          - 'null'
        vanaf:
          type: integer
          format: int32
        totaal:
          type: integer
          format: int32
        rijen:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/LijstResultaatRij'
        volgende:
          type:
          - string
          - 'null'
          description: De volgende pagina, of leeg als dit de laatste was.
        avg:
          type:
          - string
          - 'null'
      additionalProperties: false
      description: Een pagina rijen van een geleverde lijst.
    ApiFoutResponse:
      type: object
      properties:
        fout:
          type:
          - string
          - 'null'
          description: Foutmelding in het Nederlands, bedoeld om te tonen aan een eindgebruiker.
          example: Ongeldige API-key.
        code:
          type:
          - string
          - 'null'
          description: 'Stabiele foutcode om in code op te matchen. Niet elke fout heeft er een; bij een

            onverwachte fout is dit veld null.'
          example: Unauthorized
        status:
          type: integer
          description: De HTTP-statuscode, ook in de body zodat loggen zonder response-object werkt.
          format: int32
          example: 401
        detail:
          description: 'Extra toelichting waar die bestaat, anders null. Dit is soms een tekst en soms een

            object (bijvoorbeeld met de gezochte term en een hint), dus lees het als vrije JSON.'
        traceId:
          type:
          - string
          - 'null'
          description: Correlatie-id van de request. Vermeld dit bij een supportvraag.
          example: 0HN7GK2P3QJ1M:00000003
      additionalProperties: false
      description: 'De foutrespons die de API werkelijk teruggeeft. Bestaat omdat de OpenAPI-spec bij 400, 401,

        402 en 404 naar ProblemDetails verwees, terwijl

        WozApi.Middleware.ErrorHandlingMiddleware een heel andere vorm stuurt. Wie op de

        documentatie bouwde, parseerde dus elke fout verkeerd.'
    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
    LijstAdres:
      type: object
      properties:
        tekst:
          type:
          - string
          - 'null'
          description: Het hele adres als tekst. Wint van de losse velden als beide er zijn.
        straat:
          type:
          - string
          - 'null'
        huisnummer:
          type:
          - string
          - 'null'
        huisletter:
          type:
          - string
          - 'null'
        toevoeging:
          type:
          - string
          - 'null'
        postcode:
          type:
          - string
          - 'null'
        plaats:
          type:
          - string
          - 'null'
        ref:
          type:
          - string
          - 'null'
          description: Een eigen kenmerk van de gebruiker (objectnummer, regelnummer); komt terug in het bestand.
        jaar:
          type:
          - string
          - 'null'
          description: Een jaartal per adres, voor de keuze "per rij uit een kolom" op de betaalpagina.
      additionalProperties: false
      description: 'Een adres in een lijst van de API: een tekst ("Spuistraat 36C, 1012 TT Amsterdam") of losse

        velden. Een AI-assistent heeft meestal het een of het ander, en we willen hem niet laten kiezen.'
    LijstAanvraag:
      type: object
      properties:
        adressen:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/LijstAdres'
          description: 'De adressen, elk als tekst ("Spuistraat 36C, 1012 TT Amsterdam") of als object met straat,

            huisnummer, huisletter, toevoeging, postcode, plaats, en eventueel ref en jaar.'
        bestand:
          type:
          - string
          - 'null'
          description: Een Excel- of CSV-bestand in base64, in plaats van adressen.
        bestandsnaam:
          type:
          - string
          - 'null'
          description: Naam van dat bestand, met extensie (.xlsx, .xls of .csv).
        plaats:
          type:
          - string
          - 'null'
          description: De plaats voor alle adressen zonder postcode of plaats. "Kerkstraat 12" bestaat in veel plaatsen.
        email:
          type:
          - string
          - 'null'
          description: Het eigen e-mailadres van de gebruiker voor de levering; alvast ingevuld op de betaalpagina.
      additionalProperties: false
      description: 'Een nieuwe lijst: adressen, of een bestand in base64.'
    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
    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: '#/components/schemas/LijstVolgendeStap'
        avg:
          type:
          - string
          - 'null'
          description: Hoe de gebruiker met de uitkomst omgaat.
        aantallen:
          $ref: '#/components/schemas/LijstAantallen'
        proef:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/LijstProefRij'
        prijs:
          $ref: '#/components/schemas/LijstPrijs'
        betaling:
          $ref: '#/components/schemas/LijstBetaling'
        voortgang:
          $ref: '#/components/schemas/LijstVoortgang'
        kolommen:
          $ref: '#/components/schemas/LijstKolommen'
        links:
          $ref: '#/components/schemas/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
      description: De stand van een lijst. Elk veld dat in deze stand niets zegt, ontbreekt.
    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
    LijstHistorieWaarde:
      type: object
      properties:
        peildatum:
          type:
          - string
          - 'null'
        wozJaar:
          type:
          - integer
          - 'null'
          format: int32
        wozWaarde:
          type: integer
          format: int64
      additionalProperties: false
  securitySchemes:
    ApiKey:
      type: apiKey
      description: 'Gebruik je API key via header: X-Api-Key: {key} of Authorization: ApiKey {key}'
      name: X-Api-Key
      in: header
    OAuth2:
      type: oauth2
      description: 'OAuth-koppeling voor softwareleveranciers: authorization code met PKCE. Je klant koppelt zijn eigen Wozapi-account; credits gaan van diens saldo af.'
      flows:
        authorizationCode:
          authorizationUrl: https://woz-api.nl/connect/authorize
          tokenUrl: https://woz-api.nl/connect/token
          scopes:
            woz.lookup: WOZ-gegevens opvragen op de credits van de gekoppelde klant
            account.saldo: Creditsaldo van de gekoppelde klant lezen