openapi: 3.0.0
info:
  description: |
    # Introductie
    Met deze API is het mogelijk om volledig geautomatiseerd brondocumenten aan te leveren aan het Bronhouderportaal BRO. De API is RESTful opgezet.

    In vogelvlucht werkt de API door eerst een Upload aan te maken waar vervolgens, door middel van het sturen van een POST request met als body de XML van het brondocument, meerdere Brondocumenten aan kunnen worden toegevoegd. Van de Upload kan een Levering gemaakt worden. Vervolgens kan de <strong><a href="https://www.bro-productomgeving.nl/bpo/latest/aanleverproces" target="_blank" >status</a></strong> van de levering periodiek worden opgevraagd, waarbij uiteindelijk een BRO-ID teruggeven wordt.

    Ter ondersteuning van de kwaliteitscontrole van een levering is het mogelijk om een levering en/of de brondocumenten van een levering te verrijken met extra gegevens.

    Daarnaast kunnen brondocumenten gevalideerd worden, zonder dat hiervoor een levering wordt aangemaakt. Deze functionaliteit is tevens geschikt om te testen of de koppeling met de API correct functioneert.

    # Authenticatie
    Om van de API gebruik te kunnen maken, dient een aanlevertoken te worden aangemaakt in het Bronhouderportaal. Dit aanlevertoken bestaat uit twee delen: een token username en het daadwerkelijke token (password) zelf. Het password is in een later stadium niet meer op te vragen en is ook niet bekend binnen het Bronhouderportaal BRO. Het password kan later eventueel wel worden gereset. 

    De API gebruikt _HTTP basic authentication_. Dit betekent dat bij elk request een __Authorization__ header meegestuurd moet worden bestaande uit de Base64 encoding van de string `USERNAME:PASSWORD` waarbij:

    <dl>
      <dt><code>USERNAME</code></dt>
      <dd>de token username (e.g. 0dce6fc98256|123456789|1234)</dd>

      <dt><code>PASSWORD</code></dt>
      <dd>het eenmalig gegenereerde token (e.g. cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32)</dd>
    </dl>

    Succesvol kunnen authenticeren kan getest worden door een validatie verzoek te sturen via het validatie endpoint van API. Dit endpoint valideert brondocumenten zonder de betreffende omgeving te vervuilen met testleveringen.

  version: 3.182.0
  title: Bronhouderportaal BRO API Versie 2
  contact:
    name: BRO Servicedesk
    url: https://basisregistratieondergrond.nl/service-contact/formulieren/contactformulier/
    email: support@broservicedesk.nl
  x-logo:
    url: "/assets/ro_logo.png"
    backgroundColor: "#FFFFFF"
    altText: "Rijksoverheid"
servers:
  - url: /
tags:
  - name: Algemeen
  - name: Valideren
    description: |
      De API kan brondocumenten valideren zonder dat hiervoor een levering hoeft te worden aangemaakt. De aanroep is vrijwel identiek aan het aanmaken van een levering, met als grootste verschil dat bij het aanmaken van een levering de brondocumenten asynchroon worden gevalideerd, terwijl hier het valideren synchroon plaatsvindt. Het response geeft dus meteen aan of het brondocument valide is, en zoniet, wat de gevonden problemen zijn.
  - name: Uploads
    description: |
      Initieer een nieuwe Upload om één of meerdere Brondocumenten in één Levering te kunnen aanleveren. Het aanleveren van meerdere leveringen in één Levering maakt het voor de Kwaliteitscontroleur en Bronhouder eenvoudiger om brondocumenten te controleren en te accorderen.

      Een Levering aanmaken met meerdere brondocumenten gaat als volgt:
      1. Maak een nieuwe Upload aan.
      2. Voeg één voor één nieuwe brondocumenten toe aan de in stap 1 aangemaakte Upload.
      3. Maak een nieuwe Levering op basis van de Upload.

  - name: Leveringen
    description: |
      Een Levering is een verzameling van één of meerdere Brondocumenten. Alle Brondocumenten in een Levering ondergaan dezelfde <strong><a href="https://www.bro-productomgeving.nl/bpo/latest/aanleverproces" target="_blank">workflow</a></strong>:

          Valideren -> Controleren -> Vaststellen -> Doorleveren

      voordat ze uiteindelijk worden doorgeleverd aan de LV BRO.

  - name: Brondocumenten
    description: |
      Een Brondocument omvat een XML document in IMBRO formaat. Het Brondocument zal uiteindelijk een BRO-ID krijgen van de LV BRO na het bereiken van de achtereenvolgende <strong><a href="https://www.bro-productomgeving.nl/bpo/latest/aanleverproces" target="_blank" >statussen</a></strong>:

          Geldig -> Valide -> Goedgekeurd -> Geaccordeerd -> Opgenomen LV BRO

      Een afwijkende status in één van de stappen zal als gevolg hebben dat het Brondocument niet in de LV BRO zal worden opgenomen en zal dus ook geen BRO-ID krijgen.
  - name: Verrijken
    description: |
      Na aanmaak van een levering kan een (intern) controleur de levering goedkeuren of afkeuren. Ten behoeve van deze controle kunnen er gegevens worden toegevoegd aan de levering of aan de brondocumenten van de levering. Het gaat hierbij om notities (tekst) en/of bijlagen (bestanden).

      Er kunnen 3 types notities worden toegevoegd: info-, warning- en error-notities. Voor elk type is een apart endpoint (`/info`, `/warnings` en `/errors`).

      De verschillende types zijn visueel van elkaar te onderscheiden via de webinterface van het Bronhouderportaal BRO.
  - name: Registraties
    description: |
      Met behulp van deze API's kunnen gegevens worden bekeken uit de registratie ondergrond van LV BRO.
  - name: Transacties
    description: |
      Met behulp van deze API's kunnen gegevens worden bekeken uit het transactieregister van LV BRO.
paths:
  /api/v2/ontvangen-machtigingen:
    get:
      summary: Ontvangen machtigingen
      description: 'EXPERIMENTEEL: Overzicht van de ontvangen machtiging behorende bij de aangemelde organisatie.'
      tags:
        - Algemeen
      parameters:
        - in: query
          name: bronhouder
          schema:
            type: string
            example: 12345678
          required: false
          description: KVK nummer van de bronhouder organisatie.
        - in: query
          name: includeClosed
          schema:
            type: boolean
            example: true
          required: false
          description: Inclusief of exclusief gesloten machtigingen.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ontvangenMachtigingen'
              examples:
                ontvangenMachtigingen:
                  summary: Ontvangen machtigingen
                  value:
                    - machtigingId: 1
                      referentie: Referentie machtiging 1
                      type: Aanleveren
                      closed: false
                      Verstrekker:
                        kvkNummer: "12345678"
                        naam: Verstrekkende organisatie
                      Project:
                        url: https://demo.bronhouderportaal-bro.nl/api/v2/1000/
                        projectId: 1000
                        projectNaam: Project 1000
                        closed: false
                      gedelegeerdeMachtigingen:
                        - machtigingId: 3
                          referentie: Referentie machtiging 3
                          type: Aanleveren
                          closed: false
                          Verstrekker:
                            kvkNummer: "18273645"
                            naam: Gedelegeerde organisatie
                          Project:
                            url: https://demo.bronhouderportaal-bro.nl/api/v2/1000/
                            projectId: 1000
                            projectNaam: Project 1000
                            closed: false
                    - machtigingId: 2
                      referentie: Referentie machtiging 2
                      type: Controleren
                      closed: true
                      Verstrekker:
                        kvkNummer: 87654321
                        naam: Verstrekkende organisatie 2
                      Project:
                        url: https://demo.bronhouderportaal-bro.nl/api/v2/2000/
                        projectId: 2000
                        projectNaam: Project 2000
                        closed: false
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/ontvangen-machtigingen HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/ontvangen-machtigingen \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
  /api/v2/projecten:
    get:
      summary: Projecten
      description: 'EXPERIMENTEEL: Overzicht van projecten horende bij de aangemelde organisatie en projecten waarvoor de aangemelde organisatie een machtiging heeft verkregen.
       
      <ul>
      <li>Je bent bronhouder: in dit geval zie je de projecten + de gerelateerde machtigingen waarvoor je bronhouder bent</li>
      <li>Je bent dataleverancier / controleur: in dat geval zie je de projecten waarin je een machtiging hebt. De machtigingen die niet van jou zijn, zijn weggehaald</li>
      </ul>
      
      Merk op: je kunt tegelijkertijd zowel bronhouder voor een aantal projecten zijn alsmede dataleverancier voor een aantal andere projecten zijn.'
      tags:
        - Algemeen
      parameters:
        - in: query
          name: projectsToInclude
          schema:
            type: string
            example: closed
            default: open
            enum: ['open', 'closed', 'all']
          allowEmptyValue: true
          required: false
          description: Parameter om te kunnen discrimineren op open en/of gesloten projecten.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/projectenWithMachtigingen'
              examples:
                projecten:
                  summary: Projecten
                  value:
                    - url: https://demo.bronhouderportaal-bro.nl/api/v2/1/leveringen
                      projectId: 1
                      projectNaam: Projectnaam
                      closed: false
                      Bronhouder:
                        kvkNummer: 87654321
                        naam: Bronhouder
                      Machtigingen:
                        - machtigingId: 1
                          referentie: Referentie machtiging
                          type: Aanleveren
                          closed: false
                          autogoedkeuren: true
                          autoAccorderen: true
                          Verstrekker:
                            kvkNummer: 12345678
                            naam: Verstrekkende organisatie
                        - machtigingId: 2
                          referentie: Referentie machtiging
                          type: Aanleveren
                          closed: false
                          autogoedkeuren: true
                          autoAccorderen: true
                          Verstrekker:
                            kvkNummer: 87654321
                            naam: Verstrekkende organisatie
                    - url: https://demo.bronhouderportaal-bro.nl/api/v2/2/leveringen
                      projectId: 2
                      projectNaam: Projectnaam 2
                      closed: false
                      Bronhouder:
                        kvkNummer: 98765432
                        naam: Bronhouder
                      Machtigingen:
                        - machtigingId: 3
                          referentie: Referentie machtiging
                          type: Aanleveren
                          closed: false
                          autogoedkeuren: true
                          autoAccorderen: true
                          Verstrekker:
                            kvkNummer: 98765432
                            naam: Verstrekkende organisatie
                        - machtigingId: 4
                          referentie: Referentie machtiging
                          type: Aanleveren
                          closed: false
                          autogoedkeuren: true
                          autoAccorderen: true
                          Verstrekker:
                            kvkNummer: 98765432
                            naam: Verstrekkende organisatie
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/projecten HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/projecten \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
  /api/v2/validatie:
    post:
      summary: Brondocument valideren zonder projectnummer
      description: |
        <p>Dit endpoint valideert een verzoek op basis van de niet confidentiële gegevens, de zogenaamde publieke validatie. Als een gegeven confidentieel is dan wordt dit gegeven niet gevalideerd. Deze gegevens zijn in de catalogus vaak te herkennen aan de tekst: <i>"Het gegeven wordt alleen uitgeleverd aan de dataleverancier en de bronhouder"</i>. Verder worden het <i>"actualisatie recht"</i> (het mogen aanvullen op een bestaand object) en het <i>"correctie recht"</i> (het mogen corrigeren van een bestaand object) niet gevalideerd.</p>
        <p>Niet valideren in deze context betekent: <i>"er wordt geen uitspraak gedaan bij de validatie over een attribuut, entiteit of processtap"</i>. Deze validatie vindt wel plaats bij leveren met een projectnummer. In sommige gevallen kan dus een document wat publiek correct valideert, alsnog worden afgewezen bij aanleveren in een project (met project id).</p>
        <p>Deze publieke validatie is ook aanwezig direct op de landelijke voorziening per afzonderlijk registratie object.</p>
      tags:
        - Valideren
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/brondocument'
            example: |
              <?xml version="1.0" standalone="yes"?>
              <ns:registrationRequest ...>
                  <requestReference>ref123</requestReference>
                  <deliveryAccountableParty>98765432</deliveryAccountableParty>
                  <qualityRegime>IMBRO</qualityRegime>
                  <ns2:sourceDocument>...</ns2:sourceDocument>
              </ns:registrationRequest>
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResult'
              examples:
                valid:
                  summary: Valide
                  value:
                    status: VALIDE
                invalid:
                  summary: Niet valide
                  value:
                    status: NIET_VALIDE
                    errors:
                      - "Er zijn 1 of meer fouten geconstateerd in het brondocument."
                      - "Put geschiedenis.inrichtingsdatum put (WellHistory.wellConstructionDate) = (2117-12-31, JJJJ-MM-DD) waarde is niet correct: mag niet in de toekomst liggen."
        '422':
          $ref: '#/components/responses/SemanticProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/validatie HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: application/xml
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/validatie \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: application/xml" \
                --data "@gmwRegistrationRequest.xml"

  /api/v2/{projectnummer}/validatie:
    post:
      summary: Brondocument valideren met projectnummer
      description: |
        <p>Dit endpoint valideert een verzoek op basis van alle gegevens: confidentieel en publiek tegen de huidige toestand van de landelijke voorziening. Merk op dat brondocumenten pas worden opgenomen in de landelijke voorziening na accorderen / goedkeuren  door de bronhouder (doorleveren). Het kan dus nog zo zijn dat de toestand van de landelijke voorziening wijzigt door brondocumenten die nog in behandeling zijn in het bronhouderportaal.</p>
        <p>Tijdens de inname (doorleveren) wordt deze validatie opnieuw uitgevoerd.</p>
      tags:
        - Valideren
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: query
          deprecated: true
          name: bronhouder
          schema:
            type: string
            example: 98765432
          required: false
          description: "Deze parameter heeft geen functie meer en wordt genegeerd."

      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/brondocument'
            example: |
              <?xml version="1.0" standalone="yes"?>
              <ns:registrationRequest ...>
                  <requestReference>ref123</requestReference>
                  <deliveryAccountableParty>98765432</deliveryAccountableParty>
                  <qualityRegime>IMBRO</qualityRegime>
                  <ns2:sourceDocument>...</ns2:sourceDocument>
              </ns:registrationRequest>
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResult'
              examples:
                valid:
                  summary: Valide
                  value:
                    status: VALIDE
                invalid:
                  summary: Niet valide
                  value:
                    status: NIET_VALIDE
                    errors:
                      - "Er zijn 1 of meer fouten geconstateerd in het brondocument."
                      - "Put geschiedenis.inrichtingsdatum put (WellHistory.wellConstructionDate) = (2117-12-31, JJJJ-MM-DD) waarde is niet correct: mag niet in de toekomst liggen."
        '400':
            $ref: '#/components/responses/BadRequestProblemEmpty'
        '401':
            $ref: '#/components/responses/AuthenticationProblem'
        '403':
            $ref: '#/components/responses/AuthorizationProblemValideren'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/validatie HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: application/xml
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/validatie \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: application/xml" \
                --data "@gmwRegistrationRequest.xml"
  /api/v2/{projectnummer}/uploads:
    post:
      summary: Upload aanmaken
      tags:
        - Uploads
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
      responses:
        '201':
          description: Created
          headers:
            Location:
              schema:
                type: string
              description: |
                URL van de aangemaakte Upload. Deze dient gebruikt te worden in opeenvolgende API requests om bijvoorbeeld een brondocument toe te voegen aan een Upload.
                De id van de upload (in onderstaande geval 0000013524) zal ook de id van de levering worden.
              example: https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/0000013524
          links:
            getUpload:
              operationId: getUpload
              parameters:
                id: '0000013524'
        '400':
          $ref: '#/components/responses/SyntaxProblem'
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/uploads HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --request POST
  /api/v2/{projectnummer}/uploads/{upload_id}:
    get:
      operationId: getUpload
      summary: Upload bekijken
      description: Bekijk de details van een Upload.
      tags:
        - Uploads
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: upload_id
          schema:
            type: string
            example: 000015324
          required: true
          description: Id van de Upload om te bekijken.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Upload'
              examples:
                brondocumenten:
                  summary: Met brondocumenten
                  value:
                    id: 123
                    brondocumenten:
                      - id: 1
                        filename: zelf_gekozen.xml
                        sizeInBytes: '30174'
                      - id: 2
                        filename: 5a19b4f2e1a9.xml
                        sizeInBytes: '13613'
                empty:
                  summary: Leeg
                  value:
                    id: 234
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/1448/uploads/13524 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/13524 \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
    delete:
      summary: Upload verwijderen
      description: Verwijder de Upload met alle bijbehorende Brondocumenten.
      tags:
        - Uploads
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: upload_id
          schema:
            type: string
            example: 000015324
          required: true
          description: Id van de Upload om te bekijken.
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            DELETE /api/v2/1448/uploads/13524 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/13524 \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --request DELETE
  /api/v2/{projectnummer}/uploads/{upload_id}/brondocumenten:
    post:
      summary: Brondocument toevoegen
      description: Voeg een Brondocument toe aan een Upload.
      tags:
        - Uploads
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: upload_id
          schema:
            type: string
            example: 000015324
          required: true
          description: Id van de Upload om het brondocument aan toe te voegen.
        - in: query
          name: filename
          schema:
            type: string
            example: brondocument-746423.xml
          required: false
          description: Optionele bestandsnaam voor het bijbehorende xml bestand. De bestandsnaam moet eindigen op `.xml`. In het geval er geen bestandsnaam wordt meegegeven wordt een bestandsnaam gegenereerd van de vorm `602515ec5867.xml`.
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/brondocument'
            example: |
              <?xml version="1.0" standalone="yes"?>
              <ns:registrationRequest ...>
                  <requestReference>ref123</requestReference>
                  <deliveryAccountableParty>98765432</deliveryAccountableParty>
                  <qualityRegime>IMBRO</qualityRegime>
                  <ns2:sourceDocument>...</ns2:sourceDocument>
              </ns:registrationRequest>
      responses:
        '201':
          description: Created
          headers:
            Location:
              schema:
                type: string
              description: URL van het aan de Upload toegevoegde Brondocument. Deze kan worden gebruikt in opeenvolgende API requests om bijvoorbeeld een Brondocument uit een Upload te verwijderen.
              example: https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/15324/brondocumenten/854223
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenLevering'
              examples:
                voorbeeld:
                  summary: Voorbeeld
                  value:
                    uploadId: 1000000
                    aantalBestandenHuidig: 4
                    aantalBestandenResterend: 996
                    leveringsgrootteInBytesHuidig: 10056
                    leveringsgrootteInBytesResterend: 524277944
                    idLaatsteUpload: 1000003
                    leveringId: 0001000000
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfLogRecord'
              examples:
                logRecords:
                  summary: SIKB0101 validatie records
                  value:
                    LogRecord:
                      - Type: WARNING,
                        Title: xml-bestand,
                        Message: In het xml-bestand mag een Adviesbureau organisatie als Rapport auteur zijn opgenomen.
                      - Type: ERROR,
                        Title: imsikb0101:Borehole,
                        Message: Het element geometry bij Borehole _702ba0dd-79ee-43d9-83b9-c93fca29733c moet gevuld zijn
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
        '413':
          $ref: '#/components/responses/UploadTooLargeProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/uploads/1448/uploads/13524/brondocumenten HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: application/xml
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/15334/brondocumenten \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: application/xml" \
                --data "@cptRegistrationRequest.xml"
  /api/v2/{projectnummer}/uploads/{upload_id}/brondocumenten/{brondocument_id}:
    get:
      summary: Brondocument bekijken
      description: Bekijk de details van een Brondocument van een Upload.
      tags:
        - Uploads
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: upload_id
          schema:
            type: string
            example: 000015324
          required: true
          description: Id van de Upload.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: Id van het Brondocument.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadInhoud'
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/uploads/1448/uploads/15324/brondocumenten/854223 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/15324/brondocumenten/854223 \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
    delete:
      summary: Brondocument verwijderen
      description: Verwijder het Brondocument uit de Upload.
      tags:
        - Uploads
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: upload_id
          schema:
            type: string
            example: 000015324
          required: true
          description: Id van de Upload.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: Id van het Brondocument.
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            DELETE /api/v2/1448/uploads/13524/brondocumenten/854223 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/uploads/13524/brondocumenten/854223 \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --request DELETE
  /api/v2/{projectnummer}/leveringen:
    post:
      summary: Levering aanmaken
      description: |
        Een Levering kan op twee manieren aangemaakt worden:

        1. door meerdere Brondocumenten toe te voegen aan een Upload en op basis daarvan een Levering aan te maken;
        2. op basis van één Brondocument, door middel van het meesturen van de brondocument XML in de request body.

        Optie 1. kan gekozen worden door `applicaton/json` te gebruiken als `Content-Type`. Bij optie 2. moet dit `application/xml` zijn.
      tags:
        - Leveringen
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: query
          name: filename
          schema:
            type: string
            example: brondocument-6253.xml
          required: false
          description: Optionele bestandsnaam voor het bijbehorende xml bestand. De bestandsnaam moet eindigen op `.xml`. In het geval er geen bestandsnaam wordt meegegeven wordt een bestandsnaam gegenereerd van de vorm `602515ec5867.xml`. Deze query parameter is alleen van toepassing bij optie 2.
        - in: query
          name: labels
          schema:
            type: string
          required: false
          description: Optionele labels voor de Levering. Labels kunnen worden gebruikt om Leveringen naar eigen inzicht te groeperen (door Leveringen die iets met elkaar te maken hetzelfde label te geven). Een label is een kort stukje vrije tekst (max. 20 tekens) en er mogen max. 5 labels aan een Levering worden toegevoegd. Meerdere labels worden van elkaar gescheiden door middel van een komma (bv. `Label1,Label2,Label3`).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeveringFromUpload'
          application/xml:
            schema:
              $ref: '#/components/schemas/brondocument'
            example: |
              <?xml version="1.0" standalone="yes"?>
              <ns:registrationRequest ...>
                  <requestReference>ref123</requestReference>
                  <deliveryAccountableParty>98765432</deliveryAccountableParty>
                  <qualityRegime>IMBRO</qualityRegime>
                  <ns2:sourceDocument>...</ns2:sourceDocument>
              </ns:registrationRequest>
      responses:
        '201':
          description: Created
          headers:
            Location:
              schema:
                type: string
              description: URL van de aangemaakte Levering. Op basis hiervan kunnen de details van een Levering opgevraagd worden in `GET /{projectnummer}/leveringen/{leveringId}`.
              example: https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408
        '400':
          $ref: '#/components/responses/SyntaxProblem'
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/UploadNotFoundProblem'
        '413':
          $ref: '#/components/responses/UploadTooLargeProblem'
        '422':
          $ref: '#/components/responses/UnprocessableEntityProblem'
        '500':
          $ref: '#/components/responses/FailedToCreateDeliveryProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/leveringen HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: application/json" \
                --data '{"upload": "0000000456"}'
    get:
      summary: Leveringen opvragen
      description: Vraag een lijst van Levering-identifiers op op basis van de Volgende actie die op de Levering uitgevoerd dient te worden. Als deze parameter leeg is of niet wordt doorgegeven dan worden de leveringen niet gefilterd op <strong><a href="https://www.bro-productomgeving.nl/bpo/latest/aanleverproces" target="_blank" >status</a></strong>.
      tags:
        - Leveringen
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: query
          name: actie
          schema:
            type: string
            enum: ['VALIDEREN', 'CONTROLEREN', 'VASTSTELLEN', 'DOORLEVEREN', 'ARCHIVEREN']
          required: false
          description: Filter de lijst van Leveringen op basis van welke Volgende actie uitgevoerd dient te worden.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example: ['0000000001', '0000000002', '0000106408']
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/1448/leveringen?actie=CONTROLEREN HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen?actie=CONTROLEREN \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
  /api/v2/{projectnummer}/leveringen/{levering_identifier}:
    get:
      summary: Levering bekijken
      description: |
        Bekijken van de details en status van een Levering.

        Een levering ondergaat een aantal verschillende <strong><a href="https://www.bro-productomgeving.nl/bpo/latest/aanleverproces" target="_blank">stadia</a></strong>. Voorbeelden zijn: Aangeleverd, Gecontroleerd, Vastgesteld, etc. Met behulp van dit endpoint kan de status van een levering worden opgevraagd. Deze informatie kan steeds anders zijn totdat de levering een eindstatus (zoals Doorgeleverd) heeft bereikt.

        Bij de details van de levering wordt ook informatie over de inhoud van de levering, oftwel de brondocumenten, teruggegeven. Zodra de levering is doorgeleverd krijgt het brondocument uiteindelijk een Bro-ID van de LV BRO. Verder is het brondocument te identificeren aan de hand de bestandsnaam of het requestReference dat uit de XML afkomstig is.
        
        Als een verwijderde levering wordt opgevraagd dan volgt de melding 'Geen levering gevonden voor identifier 0001000000' (status: 404).
      tags:
        - Leveringen
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Levering'
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/1448/leveringen/0000106408 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408 \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
    delete:
      summary: Levering verwijderen
      description: Verwijder een Levering. Alleen niet-valide Leveringen of gearchiveerde Levering mogen verwijderd worden. Gearchiveerde Leveringen mogen alleen door de bijbehorende Bronhouder verwijderd worden.
      tags:
        - Leveringen
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            DELETE /api/v2/1448/leveringen/0000106408 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408 \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --request DELETE
  /api/v2/{projectnummer}/leveringen/{levering_identifier}/externereferentie:
    put:
      summary: Levering voorzien van externe referentie
      description: Een levering kan worden voorzien van een zelf in te vullen veld met een referentie naar een eigen administratief systeem. Deze is ook zichtbaar in het Bronhouderportaal
      tags:
        - Leveringen
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExterneReferentie'
      responses:
        '204':
          description: OK
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            PUT /api/v2/1448/leveringen/0000106408/externereferentie HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl  --request PUT https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408/externereferentie \
                --silent \
                --header 'Content-Type: application/json' \
                --remote-name \
                --remote-header-name \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
                --data '{
                      "externeReferentie": "voorbeeld"
                        }'
            
            

  /api/v2/{projectnummer}/leveringen/{levering_identifier}/brondocumenten:
    get:
      summary: Leveringspecifieke brondocumenten downloaden (zip)
      description: Voor een speciek levering-id bijhorende brondocumenten downloaden als zip-file.
      tags:
        - Leveringen
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
      responses:
        '204':
          description: OK
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
        '422':
          $ref: '#/components/responses/UnprocessableEntityProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/1448/leveringen/0000106408/brondocumenten HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl  --request GET https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408/brondocumenten \
                --silent \
                --header 'Content-Type: application/json' \
                --remote-name \
                --remote-header-name \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
  /api/v2/{projectnummer}/brondocumenten/{brondocument_id}:
    get:
      summary: Brondocument downloaden
      description: Download het Brondocument als XML-bestand.
      tags:
        - Brondocumenten
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: id van het Brondocument.
      responses:
        '200':
          description: OK
          content:
            text/xml:
              schema:
                type: string
          headers:
            Content-Disposition:
              schema:
                type: string
              description: Geeft aan welke bestandsnaam de download moet krijgen. Zie voorbeeld.
              example: attachment; filename*=cpt_registratie_1.xml
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/1448/brondocumenten/854223 HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/xml
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/brondocumenten/854223 \
                --silent \
                --remote-name \
                --remote-header-name \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32"
  /api/v2/{projectnummer}/leveringen/{levering_identifier}/info:
    post:
      summary: Levering verrijken met info notitie
      description: Een levering verrijken met een notitie met info kwalificatie.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              example: Deze levering bevat geen brondocumenten die buiten de norm vallen.
        description: de tekst van de info notitie
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/leveringen/0000106408/info HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: text/plain
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408/info \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: text/plain" \
                --data "Deze levering bevat geen brondocumenten die buiten de norm vallen."
  /api/v2/{projectnummer}/leveringen/{levering_identifier}/warnings:
    post:
      summary: Levering verrijken met warning notitie
      description: Een levering verrijken met een notitie met waarschuwing kwalificatie.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000104608
          required: true
          description: Identifier van de Levering.
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              example: Deze levering bevat 1 brondocument die buiten de norm valt.
        description: de tekst van de info notitie
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/leveringen/0000106408/warnings HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: text/plain
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408/warnings \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: text/plain" \
                --data "Deze levering bevat 1 brondocument die buiten de norm valt."
  /api/v2/{projectnummer}/leveringen/{levering_identifier}/errors:
    post:
      summary: Levering verrijken met error notitie
      description: Een levering verrijken met een notitie met fout kwalificatie.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              example: Alle brondocumenten in deze levering vallen buiten de norm.
        description: de tekst van de error notitie
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/leveringen/0000106408/errors HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: text/plain
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408/errors \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: text/plain" \
                --data "Alle brondocumenten in deze levering vallen buiten de norm."
  /api/v2/{projectnummer}/leveringen/{levering_identifier}/attachments/{filename}:
    post:
      summary: Levering verrijken met bijlage
      description: Een levering verrijken met een bijlage.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: levering_identifier
          schema:
            type: string
            example: 0000106408
          required: true
          description: Identifier van de Levering.
        - in: path
          name: filename
          schema:
            type: string
            example: mijn-bijlage.pdf
          required: true
          description: Bestandsnaam voor de bijlage.
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
        description: de bijlage
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/leveringen/0000106408/attachments/mijn-bijlage.pdf HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: application/octet-stream
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/leveringen/0000106408/attachments/mijn-bijlage.pdf \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: application/octet-stream" \
                --data-binary "@mijn-bijlage.pdf"
  /api/v2/{projectnummer}/brondocumenten/{brondocument_id}/info:
    post:
      summary: Brondocument verrijken met info notitie
      description: Een brondocument verrijken met een notitie met info kwalificatie. Dit geldt alleen voor brondocumenten die aan een levering gekoppeld zijn; brondocumenten in een upload kunnen niet verrijkt worden met een notitie.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: id van het Brondocument.
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              example: Alle waardes vallen binnen de foutmarge.
        description: de tekst van de info notitie
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/brondocumenten/854223/info HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: text/plain
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/brondocumenten/854223/info \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: text/plain" \
                --data "Alle waardes vallen binnen de foutmarge."
  /api/v2/{projectnummer}/brondocumenten/{brondocument_id}/warnings:
    post:
      summary: Brondocument verrijken met warning notitie
      description: Een brondocument verrijken met een notitie met waarschuwing kwalificatie. Dit geldt alleen voor brondocumenten die aan een levering gekoppeld zijn; brondocumenten in een upload kunnen niet verrijkt worden met een notitie.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: id van het Brondocument.
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              example: Eén waarde valt buiten de foutmarge.
        description: de tekst van de warning notitie
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/brondocumenten/854223/warnings HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: text/plain
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/brondocumenten/854223/warnings \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: text/plain" \
                --data "Eén waarde valt buiten de foutmarge."
  /api/v2/{projectnummer}/brondocumenten/{brondocument_id}/errors:
    post:
      summary: Brondocument verrijken met error notitie
      description: Een brondocument verrijken met een notitie met fout kwalificatie. Dit geldt alleen voor brondocumenten die aan een levering gekoppeld zijn; brondocumenten in een upload kunnen niet verrijkt worden met een notitie.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 1448
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: id van het Brondocument.
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              example: Alle waardes vallen buiten de foutmarge.
        description: de tekst van de error notitie
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/brondocumenten/854223/errors HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: text/plain
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/brondocumenten/854223/errors \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: text/plain" \
                --data "Alle waardes vallen buiten de foutmarge."
  /api/v2/{projectnummer}/brondocumenten/{brondocument_id}/attachments/{filename}:
    post:
      summary: Brondocument verrijken met bijlage
      description: Een brondocument verrijken met een bijlage. Dit geldt alleen voor brondocumenten die aan een levering gekoppeld zijn; brondocumenten in een upload kunnen niet verrijkt worden met een bijlage.
      tags:
        - Verrijken
      parameters:
        - in: path
          name: projectnummer
          schema:
            type: integer
            example: 456
          required: true
          description: Projectnummer zoals bekend in Bronhouderportaal.
        - in: path
          name: brondocument_id
          schema:
            type: integer
            example: 854223
          required: true
          description: id van het Brondocument.
        - in: path
          name: filename
          schema:
            type: string
            example: mijn-bijlage.pdf
          required: true
          description: Bestandsnaam voor de bijlage.
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
        description: de bijlage
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '403':
          $ref: '#/components/responses/AuthorizationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            POST /api/v2/1448/brondocumenten/854223/attachments/mijn-bijlage.pdf HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Content-Type: application/octet-stream
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/1448/brondocumenten/854223/attachments/mijn-bijlage.pdf \
                --verbose \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
                --header "Content-Type: application/octet-stream" \
                --data-binary "@mijn-bijlage.pdf"
  /api/v2/registraties:
    get:
      summary: Registratieobjecten bekijken
      description: 'EXPERIMENTEEL: Bekijk registratie-objectgegevens. 
                Het resultaat bevat alleen registratieobjecten waarvoor geldt dat de organisatie de bronhouder en/of de dataleverancier is.
                De resultaten kunnen worden gefilterd, gesorteerd en gepagineerd.'
      tags:
        - Registraties
      parameters:
        - in: query
          name: paginaindex
          schema:
            type: integer
            default: 0
          required: false
          description: De index van de pagina met zoekresultaten (eerste pagina = 0).
        - in: query
          name: paginagrootte
          schema:
            type: integer
            default: 20
          required: false
          description: De grootte van de pagina met zoekresultaten. De maximum paginagrootte is 50.
        - in: query
          name: sorteerkolom
          schema:
            type: string
            default: 'tijdstipVanRegistratie'
            enum: [ 'broId', 'objectIdBronhouder', 'bronhouder', 'dataleverancier', 'registratieobjecttype', 'kwaliteitsregime',
                    'isGeregistreerd', 'isInOnderzoek', 'tijdstipVanRegistratie'
            ]
          required: false
          description: De sorteerkolom.
        - in: query
          name: sorteervolgorde
          schema:
            type: string
            default: 'aflopend'
            enum: [ 'oplopend', 'aflopend' ]
          required: false
          description: De sorteervolgorde.
        - in: query
          name: zoekveld
          schema:
            type: string
            enum: [ 'broId', 'objectIdBronhouder' ]
          required: false
          description: Het ID/kenmerk waarop gefilted moet worden.
        - in: query
          name: zoektekst
          schema:
            type: string
          required: false
          description: De tekst waarop het ID/kenmerk gefilterd moet worden. Matching vindt plaats vanaf het begin van het veld.
            Dus het veld met waarde 'abcde' wordt wel gevonden o.b.v. zoektekst 'abc', maar niet o.b.v. zoektekst 'cde'.
        - in: query
          name: datumVanRegistratieVanaf
          schema:
            type: string
            format: date
          required: false
          description: Filter om registratieobjecten te vinden die op, of na de gegeven datum geregistreerd zijn, volgens formaat JJJJ-MM-DD.
        - in: query
          name: datumVanRegistratieTotEnMet
          schema:
            type: string
            format: date
          required: false
          description: Filter om registratieobjecten te vinden die op, of voor de gegeven datum geregistreerd zijn, volgens formaat JJJJ-MM-DD.
        - in: query
          name: registratieobjecttype
          schema:
            type: string
            enum: [ 'SAD', 'SLD', 'BHR_GT', 'BHR_P', 'BHR_G', 'CPT', 'SFR', 'GUF', 'GPD', 'GMN', 'GMW', 'GAR', 'GLD', 'FRD', 'EPC', 'EPL' ]
          required: false
          description: Filter voor het type registratieobject.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistratiesResultaat'
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
        '422':
          $ref: '#/components/responses/UnprocessableEntityProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/registraties HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/registraties \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
  /api/v2/transacties:
    get:
      summary: Transacties bekijken
      description: 'EXPERIMENTEEL: Bekijk transactiegegevens. 
                Het resultaat bevat alleen transacties waarvoor geldt dat de organisatie de bronhouder en/of de dataleverancier is.
                De resultaten kunnen worden gefilterd, gesorteerd en gepagineerd.'
      tags:
        - Transacties
      parameters:
        - in: query
          name: paginaindex
          schema:
            type: integer
            default: 0
          required: false
          description: De index van de pagina met zoekresultaten (eerste pagina = 0).
        - in: query
          name: paginagrootte
          schema:
            type: integer
            default: 20
          required: false
          description: De grootte van de pagina met zoekresultaten. De maximum paginagrootte is 50.
        - in: query
          name: sorteerkolom
          schema:
            type: string
            default: 'tijdstipVanAanbieding'
            enum: [ 'tijdstipVanAanbieding', 'transactieId', 'broId', 'verzoekkenmerk', 'objectIdBronhouder', 'transactietype', 'transactiestatus',
                    'brondocumenttype', 'redenVanAfbreken', 'kwaliteitsregime', 'registratieobjecttype', 'bronhouder', 'dataleverancier',
                    'correctiereden', 'teCorrigerenDatum', 'redenVanAfwijzing', 'tijdstipVanOntvangst' ]
          required: false
          description: De sorteerkolom.
        - in: query
          name: sorteervolgorde
          schema:
            type: string
            default: 'aflopend'
            enum: [ 'oplopend', 'aflopend' ]
          required: false
          description: De sorteervolgorde.
        - in: query
          name: zoekveld
          schema:
            type: string
            enum: [ 'broId', 'verzoekkenmerk', 'objectIdBronhouder', 'transactieId' ]
          required: false
          description: Het ID/kenmerk waarop gefilted moet worden.
        - in: query
          name: zoektekst
          schema:
            type: string
          required: false
          description: De tekst waarop het ID/kenmerk gefilterd moet worden. Matching vindt plaats vanaf het begin van het veld.
            Dus het veld met waarde 'abcde' wordt wel gevonden o.b.v. zoektekst 'abc', maar niet o.b.v. zoektekst 'cde'.
        - in: query
          name: datumVanOntvangst
          schema:
            type: string
            format: date
          required: false
          description: Filter voor de datum van ontvangst, volgens formaat JJJJ-MM-DD.
        - in: query
          name: transactietype
          schema:
            type: string
            enum: [ 'registreren', 'corrigeren', 'vervangen', 'invoegen', 'verwijderen', 'verplaatsen', 'uitRegistratieNemen', 'weerInRegistratieNemen', 'bronhouderWijzigen', 'dataleverancierWijzigen' ]
          required: false
          description: Filter voor het transactietype.
        - in: query
          name: transactiestatus
          schema:
            type: string
            enum: [ 'gecreeerd', 'gestart', 'lopend', 'afgebroken', 'doorgezet', 'afgerond', 'beeindigd', 'onderbroken' ]
          required: false
          description: Filter voor de transactiestatus.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactiesResultaat'
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
        '422':
          $ref: '#/components/responses/UnprocessableEntityProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/transacties HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/transacties \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \
  /api/v2/transacties/{transactieId}/brondocument:
    get:
      summary: Brondocument downloaden
      description: Download de XML-inhoud van het brondocument dat bij een transactie is opgeslagen.
        Voorwaarde is dat organisatie de transactie mag zien.
      tags:
        - Transacties
      parameters:
        - in: path
          name: transactieId
          schema:
            type: string
          required: true
          description: De identificatie van de transactie.
      responses:
        '200':
          description: OK
          content:
            text/xml:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/AuthenticationProblem'
        '404':
          $ref: '#/components/responses/NotFoundProblem'
      x-code-samples:
        - lang: http
          source: |
            GET /api/v2/transacties/BHR-000000066887/brondocument HTTP/1.1
            Host: demo.bronhouderportaal-bro.nl
            Accept: application/json
            Authorization: Basic OTRlOWJjOGQ3ODM0fDI3MzY0MTc4fC0yOmQ0Y2IyNjU2NmIyYjhmZmJhZjQzYzlmODQ5YTM4ZTIxNTM3OTExNWFmZmZhMWIzMmE5MWVjZWUzM2M2ODNjZjQ=
        - lang: curl
          source: |
            curl https://demo.bronhouderportaal-bro.nl/api/v2/transacties/BHR-000000066887x/brondocument \
                --user "0dce6fc98256|123456789|1234:cf573933d8be536a8ad18edfe4f69bd010f944a686abf1f6b13c5d2a455cdc32" \

components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
  responses:
    AuthenticationProblem:
      description: Authentication problem
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: authentication-problem
            title: authenticatie fout
            status: 401
            detail: Not authorized to access resource
    AuthorizationProblem:
      description: Authorization problem
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            rechten:
              value:
                type: authorization-problem
                title: autorisatie fout
                status: 403
                detail: Api token heeft niet de vereiste rechten
            token:
                value:
                  type: authorization-problem
                  title: autorisatie fout
                  status: 403
                  detail: Het gebruikte token is niet geautoriseerd op het meegegeven project 12
    AuthorizationProblemValideren:
      description: | 
        Authorization problem 
        De bronhouder heeft geen toestemming gegeven om namens de bronhouderorganisatie te valideren.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: authorization-problem
            title: autorisatie fout
            status: 403
            detail: Er is aan jouw organisatie geen autorisatie gegeven om voor deze bronhouder te valideren. De bronhouder zal jouw organisatie eerst een machtiging of toestemming via het BHP moeten geven.
    NotImplementedValideren:
      description: | 
        Not implemented problem validatie 
        Er is geen projectnummer in het pad meegegeven of geen bronhouder als queryparameter.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: not-implemented-problem
            title: ""
            status: 501
            detail: Om zonder ID van het project te kunnen valideren moet je met de query parameter 'bronhouder=' de kvk van de bronhouder meegeven.
    NotFoundProblem:
      description: Not found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            levering:
              value:
                type: not-found-problem
                title: niet gevonden fout
                status: 404
                detail: Geen levering gevonden voor identifier 0001000000
            levering en project:
                value:
                  type: not-found-problem
                  title: niet gevonden fout
                  status: 404
                  detail: Combinatie levering 0000000112 en project 31 bestaat niet
    UploadNotFoundProblem:
      description: Not found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: not-found-problem
            title: niet gevonden fout
            status: 404
            detail: Upload X bestaat niet (meer). Uploads meer dan een week oud worden verwijderd.
    BadRequestProblem:
      description: Bad request problem
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            syntax fout:
              value:
                type: syntax-problem
                title: syntax fout
                status: 400
                detail: Geen valide XML bestand
            bad request:
              value:
                type: bad-request-problem
                title: ""
                status: 400
                detail: De kvk van de bronhouder van het project is niet dezelfde als die als query parameter is meegegeven.
    BadRequestProblemEmpty:
        description: Bad request problem
        content:
            application/problem+json:
                schema:
                    $ref: '#/components/schemas/Problem'
                examples:
                    syntax fout:
                        value:
                            type: syntax-problem
                            title: syntax fout
                            status: 400
                            detail: Het document is een leeg document en kan niet worden gevalideerd
    SemanticProblem:
      description: Semantic problem
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: semantic-problem
            title: inhoudelijke fout(en)
            status: 422
            detail: Ophalen service 'Validatie' veroorzaakt fout
    SyntaxProblem:
      description: Syntax problem
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: syntax-problem
            title: syntax fout
            status: 400
            detail: Geen valide XML bestand
    UploadTooLargeProblem:
      description: Upload too large problem
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: upload-too-large-problem
            title: te veel documenten in een upload
            status: 413
            detail: Het maximum aantal brondocumenten in een levering is 1000. De maximum leveringsgroote is 500 MB.
    FailedToCreateDeliveryProblem:
      description: Failed to create delivery
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: unknown-problem
            title: aanmaken van levering is mislukt
            status: 500
            detail: Het is niet gelukt om een levering aan te maken.
    UnprocessableEntityProblem:
      description: Unprocessable entity
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            transacties:
              value:
                type: http://bpbro.local/api/v2/transacties?zoektekst=K@rakter
                title: inhoudelijke fout(en)
                status: 422
                detail: constraint violation occurred
                violations: Zoektekst mag alleen alphanumerieke charakters, spaties en .,!_-()[]/ bevatten.
            leveringen:
              value:
                type: semantic-problem
                title: inhoudelijke fout(en)
                status: 422
                detail: Gearchiveerde leveringen kunnen niet worden gedownload
                violation: [ ]

  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
          description: Uniek type-aanduiding van het probleem.
        title:
          type: string
          description: Omschrijving van het probleem.
        status:
          type: integer
          description: HTTP statuscode.
        detail:
          type: string
          description: Details van het probleem.
        violations:
            type: string
            description: Validatiemelding(en) voor parameters met ongeldige waarden.
    Upload:
      type: object
      properties:
        id:
          type: string
          description: Uniek upload id.
          example: 0000000123
        brondocumenten:
          type: array
          description: Lijst van Brondocumenten.
          items:
            $ref: '#/components/schemas/UploadInhoud'
    UploadInhoud:
      type: object
      title: Brondocument binnen een Upload
      properties:
        id:
          type: integer
          description: Uniek Brondocument id.
          example: 854223
        filename:
          type: string
          description: Bestandsnaam. Dit kan zelf meegegeven zijn of automatisch gegenereerd.
          example: bestandsnaam.xml
        sizeInBytes:
          type: integer
          description: Bestandsgrootte in bytes (UTF-8).
          example: 162354
    ValidationResult:
      type: object
      title: Validatie resultaat
      properties:
        status:
          type: string
          enum: ['NIET_VALIDE', 'VALIDE']
          description: <strong><a href="https://www.bro-productomgeving.nl/bpo/latest/aanleverproces" target="_blank" >Validatie resultaat</a></strong>.
        errors:
          type: array
          description: Lijst van validatie errors.
          items:
            type: string
    ExternalBrondocument:
      type: object
      title: Brondocument
      properties:
        id:
          type: integer
          description: Uniek Brondocument id.
          example: 854223
        lastChanged:
          type: string
          format: date-time
          description: Datum van laatste wijziging.
        status:
          type: string
          enum: ['GELDIG', 'ONGELDIG', 'NIET_VALIDE', 'VALIDE', 'GOEDGEKEURD', 'AFGEKEURD', 'GEACCORDEERD', 'AFGEWEZEN', 'OPGENOMEN_LVBRO', 'AFGEKEURD_LVBRO', 'BRO_CONNECTION_ERROR', 'BRO_SYSTEM_ERROR', 'BHP_SYSTEM_ERROR', 'RETRY']
          description: Status van het brondocument.
          example: VALIDE
        broId:
          type: string
          description: BRO-ID (alleen van toepassing bij status OPGENOMEN_LVBRO).
          example: "CPT000000150518"
        transactionId:
          type: string
          description: Transaction ID van doorleveren naar LV BRO (alleen van toepassing bij status OPGENOMEN_LVBRO).
          example: "CPT-000000106582"
        filename:
          type: string
          description: Bestandsnaam.
          example: "mijn_cpt_1.xml"
        requestReference:
          type: string
          description: Referentie Leverancier.
          example: "ref123"
        errors:
          type: array
          description: Lijst van validatie errors.
          items:
            type: string
    ExterneReferentie:
        type: object
        properties:
            externeReferentie:
                type: string
                description: zelf in te vullen externe referentie naar eigen administratief systeem
                example: voorbeeld
    LeveringFromUpload:
      type: object
      properties:
        upload:
          type: string
          description: Id van de Upload waar een Levering van gemaakt moet worden. Deze id zal ook de id van de levering worden.
      example:
        upload: 000013524
    Levering:
      type: object
      properties:
        identifier:
          type: string
          description: Levering identifier.
          example: 0000106408
        status:
          type: string
          enum: ['AANGELEVERD', 'GEVALIDEERD', 'GECONTROLEERD', 'VASTGESTELD', 'DOORGELEVERD']
          example: GEVALIDEERD
        lastChanged:
          type: string
          format: date-time
          description: Datum laatste wijziging.
        externeReferentie:
          type: string
          description: Een eerder aan de levering meegegeven referentie (naar eigen administratief systeem).
          example: Mijn-Ref-001
        brondocuments:
          type: array
          items:
            $ref: "#/components/schemas/ExternalBrondocument"
    brondocument:
      type: string
      title: IMBRO XML
      description: Het Brondocument in IMBRO XML formaat.
      example: |
        <?xml version="1.0" standalone="yes"?>
        <ns:registrationRequest ...>
            <requestReference>ref123</requestReference>
            <deliveryAccountableParty>98765432</deliveryAccountableParty>
            <qualityRegime>IMBRO</qualityRegime>
            <ns2:sourceDocument>...</ns2:sourceDocument>
        </ns:registrationRequest>
    OpenLevering:
      type: object
      properties:
        uploadId:
          type: integer
          description: Levering identifier.
          example: 0000104608
        aantalBestandenHuidig:
          type: integer
          description: Aantal bestanden dat tot op dit moment zijn geupload voor deze levering.
          example: 4
        aantalBestandenResterend:
          type: integer
          description: Maximum aantal bestanden dat nog voor deze levering kan worden toegevoegd.
          example: 996
        leveringsgrootteInBytesHuidig:
          type: integer
          description: De totale leveringsgrootte van alle geuploade brondocumenten van deze levering.
          example: 10056
        leveringsgrootteInBytesResterend:
          type: integer
          description: Maximum aantal bytes dat nog voor deze levering kan worden toegevoegd.
          example: 524277944
        idLaatsteUpload:
          type: integer
          description: Identifier van de laatse upload.
          example: 1000003
        leveringId:
          type: string
          description: De identifier van de levering in het geval er een levering van de upload wordt gemaakt
          example: 0001000000
    ontvangenMachtigingen:
      type: array
      items:
        $ref: "#/components/schemas/OntvangenMachtiging"
    projectenWithMachtigingen:
      type: array
      items:
        $ref: "#/components/schemas/ProjectWithMachtigingen"
    OntvangenMachtiging:
      allOf:
        - $ref: "#/components/schemas/Machtiging"
        - properties:
            Project:
                $ref: "#/components/schemas/Project"
            gedelegeerdeMachtingen:
              type: array
              description: Gedelegeerde machtigingen vanuit de machtiging
              items:
                $ref: "#/components/schemas/OntvangenMachtiging"
    ProjectWithMachtigingen:
      allOf:
        - $ref: "#/components/schemas/Project"
        - properties:
            Machtigingen:
              type: array
              items:
                $ref: "#/components/schemas/Machtiging"
    Machtiging:
      type: object
      properties:
        machtigingId:
          type: integer
          description: Id van de machtiging
          example: 1
        referentie:
          type: string
          description: Referentie van de machtiging
          example: Machtiging referentie
        type:
          type: string
          description: Type machtiging (Aanleveren, Controleren, Verrijken of Aanleveren en Controleren
          example: Aanleveren
        autoGoedkeuren:
          type: boolean
          description: Automatisch goedkeuren van de leveringen aangeleverd onder deze machtiging
          example: true
        autoAccorderen:
          type: boolean
          description: Automatisch accorderen van de leveringen aangeleverd onder deze machtiging
          example: true
        closed:
          type: boolean
          description: Machtiging gesloten
          example: false
        Verstrekker:
          type: object
          properties:
            kvkNummer:
              type: string
              description: KVK Nummer van de verstrekkende organisatie
              example: 12345678
            naam:
              type: string
              description: Naam van de verstrekkende organisatie
              example: Verstrekkende organisatie
    Project:
      type: object
      properties:
        url:
          type: string
          description: basis url voor vervolgactie
          example: "https://demo.bronhouderportaal-bro.nl/api/v2/1/leveringen"
        projectId:
          type: integer
          description: Project identifier
          example: 1001
        projectNaam:
          type: string
          description: Project naam
          example: Project Naam
        closed:
          type: boolean
          description: Project gesloten
          example: false
        Bronhouder:
          $ref: "#/components/schemas/Bronhouder"
    Bronhouder:
      type: object
      properties:
        kvkNummer:
          type: string
          description: KVK Nummer van de bronhouder organisatie
          example: 12345678
        naam:
          type: string
          description: Naam van de bronhouder organisatie
          example: Bronhouder organisatie
    TransactiesResultaat:
        type: object
        properties:
            transacties:
                type: array
                items:
                    $ref: "#/components/schemas/Transactie"
                description: De gevonden zoekresultaten, o.b.v. de toegepaste filtering, sortering en paginering.
            aantalZoekresultaten:
                type: integer
                format: int64
                description: Het totaal aantal resultaten van de zoekopdracht (dus met filtering, maar zonder paginering).
    Transactie:
        type: object
        properties:
            transactieId:
                type: string
                description: De identificatie die door de BRO wordt gebruikt voor de transactie.
            broId:
                type: string
                description: De identificatie die het object waarop de transactie betrekking heeft, in de registratie ondergrond heeft.
            bronhouderKvk:
                type: string
                description: Het KvK-nummer van de organisatie die als bronhouder van het object in de registratie ondergrond is vastgelegd.
            bronhouderNaam:
                type: string
                description: De naam van de organisatie die als bronhouder van het object in de registratie ondergrond is vastgelegd.
            dataleverancierKvk:
                type: string
                description: Het KvK-nummer van de organisatie die als dataleverancier van het object in de registratie ondergrond is vastgelegd.
            dataleverancierNaam:
                type: string
                description: De naam van de organisatie die als dataleverancier van het object in de registratie ondergrond is vastgelegd.
            verzoekkenmerk:
                type: string
                description: Het kenmerk dat de dataleverancier heeft meegegeven om het innameverzoek te identificeren, dan wel het kenmerk dat de BRO bij aanlevering via het innameloket aan het verzoek heeft toegekend.
            brondocumenttype:
                type: string
                description: De aanduiding van het type brondocument dat is aangeboden.
            brondocument:
                type: string
                description: De URL waarmee het brondocument kan worden gedownload.
            kwaliteitsregime:
                type: string
                enum: ['IMBRO', 'IMBRO/A']
                description: De kwaliteitseis waaraan het brondocument volgens de dataleverancier voldoet.
            objectIdBronhouder:
                type: string
                description: De identificatie die bij registratie van een nieuw object is gebruikt in het brondocument om het object te identificeren.
            tijdstipVanAcceptatie:
                type: string
                format: date-time
                description: De datum en het tijdstip waarop een innameverzoek door het BRO-systeem is geaccepteerd.
            tijdstipVanAfwijzing:
                type: string
                format: date-time
                description: De datum en het tijdstip waarop een innameverzoek door het systeem of een registratiebeheerder is afgewezen.
            correctiereden:
                type: string
                enum: ['typeBrondocument', 'eigenCorrectie', 'gegevensOnderzoek', 'inOnderzoek', 'kwaliteitsregime', 'gegevensAdministratief', 'bronhouder']
                description: De reden voor verbetering die een dataleverancier in een correctieverzoek heeft opgegeven.
            tijdstipVanOntvangst:
                type: string
                format: date-time
                description: De datum en het tijdstip waarop een innameverzoek door het BRO-systeem is ontvangen.
            tijdstipVanVerwerking:
                type: string
                format: date-time
                description: De datum en het tijdstip waarop een accorderingsbericht van de bronhouder door de BRO is verwerkt.
            tijdstipVanGoedkeuring:
                type: string
                format: date-time
                description: De datum en het tijdstip waarop de registratiebeheerder een correctieverzoek heeft goedgekeurd.
            tijdstipVanAanbieding:
                type: string
                format: date-time
                description: De datum en het tijdstip waarop de registratiebeheerder het accorderingsverzoek voor verzending aan de BRO heeft aangeboden.
            redenVanAfbreken:
                type: string
                enum: ['systeemfout', 'softwarefout']
                description: De aanduiding die aangeeft of er in de verwerking van het innameverzoekeen technische fout is opgetreden.
            redenVanAfwijzing:
                type: string
                description: De reden waarom het verzoek door het BRO-systeem is afgewezen.
            redenVanAfwijzingCode:
                type: string
                enum: ['softwarefout', 'gebruiksfout']
                description: De aanduiding die aangeeft of het verzoek door het BRO-systeem is afgewezen.
            bezwaarGemaakt:
                type: string
                enum: ['ja', 'nee']
                description: De aanduiding die aangeeft of de registratiebeheerder het correctieverzoek heeft afgewezen.
            redenVanBezwaar:
                type: string
                description: De reden waarom het correctieverzoek door de registratiebeheerder is afgewezen.
            transactietype:
                type: string
                enum: [ 'registreren', 'corrigeren', 'vervangen', 'invoegen', 'verwijderen', 'verplaatsen', 'uitRegistratieNemen', 'weerInRegistratieNemen', 'bronhouderWijzigen', 'dataleverancierWijzigen' ]
                description: De code die aangeeft wat het doel is van de transactie.
            registratieobjecttype:
                type: string
                description: De code die in het BRO-systeem gebruikt is voor het type registratieobject.
            transactiestatus:
                type: string
                enum: [ 'gecreeerd', 'gestart', 'lopend', 'afgebroken', 'doorgezet', 'afgerond', 'beeindigd', 'onderbroken' ]
                description: Het stadium dat de overdracht van gegevens heeft bereikt.
            teCorrigerenDatum:
                type: string
                description: Het gegeven dat een dataleverancier heeft meegegeven in een verzoek de datum van een gebeurtenis te verschuiven.
            teCorrigerenDatumFormaat:
                type: string
                enum: [ 'JJJJ-MM-DD', 'JJJJ', 'JJJJ-MM', 'onbekend' ]
                description: Het formaat van de te corrigeren datum.
            bronhoudersgoedkeuring:
                type: string
                enum: ['ja', 'nee']
                description: De aanduiding die aangeeft of de bronhouder akkoord is met het accorderingsverzoek.
    RegistratiesResultaat:
      type: object
      properties:
        registratieobjecten:
          type: array
          items:
            $ref: "#/components/schemas/Registratieobject"
          description: De gevonden zoekresultaten, o.b.v. de toegepaste filtering, sortering en paginering.
        aantalZoekresultaten:
          type: integer
          format: int64
          description: Het totaal aantal resultaten van de zoekopdracht (dus met filtering, maar zonder paginering).
    Registratieobject:
      type: object
      properties:
        broId:
          type: string
          description: De identificatie die het object in de registratie ondergrond heeft.
        objectIdBronhouder:
          type: string
          description: De identificatie die bij registratie van een nieuw object is gebruikt in het brondocument om het object te identificeren.
        bronhouderKvk:
          type: string
          description: Het KvK-nummer van de organisatie die als bronhouder van het object in de registratie ondergrond is vastgelegd.
        bronhouderNaam:
          type: string
          description: De naam van de organisatie die als bronhouder van het object in de registratie ondergrond is vastgelegd.
        dataleverancierKvk:
          type: string
          description: Het KvK-nummer van de organisatie die als dataleverancier van het object in de registratie ondergrond is vastgelegd.
        dataleverancierNaam:
          type: string
          description: De naam van de organisatie die als dataleverancier van het object in de registratie ondergrond is vastgelegd.
        registratieobjecttype:
          type: string
          enum: ['SAD', 'SLD', 'BHR_GT', 'BHR_P', 'BHR_G', 'CPT', 'SFR', 'GUF', 'GPD', 'GMN', 'GMW', 'GAR', 'GLD', 'FRD', 'EPC', 'EPL']
          description: De code die in het BRO-systeem gebruikt is voor het type registratieobject.
        kwaliteitsregime:
          type: string
          enum: ['IMBRO', 'IMBRO/A']
          description: De kwaliteitseis waaraan het brondocument volgens de dataleverancier voldoet.
        isGeregistreerd:
          type: string
          enum: ['ja', 'nee']
          description: De aanduiding die aangeeft of het registratieobject in registratie is (niet uit registratie is genomen).
        isInOnderzoek:
          type: string
          enum: ['ja', 'nee']
          description: De aanduiding die aangeeft of het registratieobject in onderzoek is.
        tijdstipVanRegistratie:
          type: string
          format: date-time
          description: De datum en het tijdstip waarop het object geregistreerd is.
        tijdstipVanVoltooiing:
          type: string
          format: date-time
          description: De datum en het tijdstip waarop de registratie van het object voltooid is.
    ArrayOfLogRecord:
      type: object
      properties:
        LogRecord:
          type: array
          description: Validatie fouten tijdens conversie
          items:
            $ref: "#/components/schemas/LogRecord"
    LogRecord:
      type: object
      description: Een LogRecord wordt teruggegeven indien de conversie van SIKB0101 documenten validatie fouten geeft tijdens de conversie.
      properties:
        Type:
          type: string
          description: Type validatie fout
        Title:
          type: string
          description: Titel van de validatie fout
        Message:
          type: string
          description: Details van de validatie fout
