components:
  requestBodies:
    Besluit:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Besluit'
      required: true
  responses:
    "400":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ValidatieFout'
      description: Bad request
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "401":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Unauthorized
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "403":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Forbidden
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "404":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Not found
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "406":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Not acceptable
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "409":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Conflict
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "410":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Gone
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "412":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Precondition failed
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "415":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Unsupported media type
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "429":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Too many requests
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
    "500":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Fout'
      description: Internal server error
      headers:
        API-version:
          description: 'Geeft een specifieke API-versie aan in de context van een
            specifieke aanroep. Voorbeeld: 1.2.1.'
          schema:
            type: string
  schemas:
    AuditTrail:
      properties:
        aanmaakdatum:
          description: De datum waarop de handeling is gedaan.
          format: date-time
          readOnly: true
          title: Aanmaakdatum
          type: string
        actie:
          description: |-
            De uitgevoerde handeling.

            De bekende waardes voor dit veld zijn hieronder aangegeven,                         maar andere waardes zijn ook toegestaan

            Uitleg bij mogelijke waarden:

            * `create` - Object aangemaakt
            * `list` - Lijst van objecten opgehaald
            * `retrieve` - Object opgehaald
            * `destroy` - Object verwijderd
            * `update` - Object bijgewerkt
            * `partial_update` - Object deels bijgewerkt
          maxLength: 50
          minLength: 1
          title: Actie
          type: string
        actieWeergave:
          description: Vriendelijke naam van de actie.
          maxLength: 200
          title: Actie weergave
          type: string
        applicatieId:
          description: Unieke identificatie van de applicatie, binnen de organisatie.
          maxLength: 100
          title: Applicatie id
          type: string
        applicatieWeergave:
          description: Vriendelijke naam van de applicatie.
          maxLength: 200
          title: Applicatie weergave
          type: string
        bron:
          description: |-
            De naam van het component waar de wijziging in is gedaan.

            Uitleg bij mogelijke waarden:

            * `ac` - Autorisaties API
            * `nrc` - Notificaties API
            * `zrc` - Zaken API
            * `ztc` - Catalogi API
            * `drc` - Documenten API
            * `brc` - Besluiten API
            * `cmc` - Contactmomenten API
            * `kc` - Klanten API
            * `vrc` - Verzoeken API
          enum:
          - ac
          - nrc
          - zrc
          - ztc
          - drc
          - brc
          - cmc
          - kc
          - vrc
          title: Bron
          type: string
        gebruikersId:
          description: Unieke identificatie van de gebruiker die binnen de organisatie
            herleid kan worden naar een persoon.
          maxLength: 255
          title: Gebruikers id
          type: string
        gebruikersWeergave:
          description: Vriendelijke naam van de gebruiker.
          maxLength: 255
          title: Gebruikers weergave
          type: string
        hoofdObject:
          description: De URL naar het hoofdobject van een component.
          format: uri
          maxLength: 1000
          minLength: 1
          title: Hoofd object
          type: string
        resource:
          description: Het type resource waarop de actie gebeurde.
          maxLength: 50
          minLength: 1
          title: Resource
          type: string
        resourceUrl:
          description: De URL naar het object.
          format: uri
          maxLength: 1000
          minLength: 1
          title: Resource url
          type: string
        resourceWeergave:
          description: Vriendelijke identificatie van het object.
          maxLength: 200
          minLength: 1
          title: Resource weergave
          type: string
        resultaat:
          description: HTTP status code van de API response van de uitgevoerde handeling.
          maximum: 599
          minimum: 100
          title: Resultaat
          type: integer
        toelichting:
          description: Toelichting waarom de handeling is uitgevoerd.
          title: Toelichting
          type: string
        uuid:
          description: Unieke identificatie van de audit regel.
          format: uuid
          title: Uuid
          type: string
        wijzigingen:
          $ref: '#/components/schemas/Wijzigingen'
      required:
      - bron
      - actie
      - resultaat
      - hoofdObject
      - resource
      - resourceUrl
      - resourceWeergave
      - wijzigingen
      type: object
    Besluit:
      properties:
        besluittype:
          description: URL-referentie naar het BESLUITTYPE (in de Catalogi API).
          format: uri
          maxLength: 200
          minLength: 1
          title: Besluittype
          type: string
        bestuursorgaan:
          description: Een orgaan van een rechtspersoon krachtens publiekrecht ingesteld
            of een persoon of college, met enig openbaar gezag bekleed onder wiens
            verantwoordelijkheid het besluit vastgesteld is.
          maxLength: 50
          title: Bestuursorgaan
          type: string
        datum:
          description: De beslisdatum (AWB) van het besluit.
          format: date
          title: Datum
          type: string
        identificatie:
          description: Identificatie van het besluit binnen de organisatie die het
            besluit heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die
            gegenereerd.
          maxLength: 50
          title: Identificatie
          type: string
        ingangsdatum:
          description: Ingangsdatum van de werkingsperiode van het besluit.
          format: date
          title: Ingangsdatum
          type: string
        publicatiedatum:
          description: Datum waarop het besluit gepubliceerd wordt.
          format: date
          nullable: true
          title: Publicatiedatum
          type: string
        toelichting:
          description: Toelichting bij het besluit.
          title: Toelichting
          type: string
        uiterlijkeReactiedatum:
          description: De datum tot wanneer verweer tegen het besluit mogelijk is.
          format: date
          nullable: true
          title: Uiterlijke reactiedatum
          type: string
        url:
          description: URL-referentie naar dit object. Dit is de unieke identificatie
            en locatie van dit object.
          format: uri
          maxLength: 1000
          minLength: 1
          readOnly: true
          title: Url
          type: string
        verantwoordelijkeOrganisatie:
          description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie
            die het besluit heeft vastgesteld.
          maxLength: 9
          minLength: 1
          title: Verantwoordelijke organisatie
          type: string
        vervaldatum:
          description: Datum waarop de werkingsperiode van het besluit eindigt.
          format: date
          nullable: true
          title: Vervaldatum
          type: string
        vervalreden:
          description: |-
            De omschrijving die aangeeft op grond waarvan het besluit is of komt te vervallen.

            Uitleg bij mogelijke waarden:

            * `tijdelijk` - Besluit met tijdelijke werking
            * `ingetrokken_overheid` - Besluit ingetrokken door overheid
            * `ingetrokken_belanghebbende` - Besluit ingetrokken o.v.v. belanghebbende
          enum:
          - tijdelijk
          - ingetrokken_overheid
          - ingetrokken_belanghebbende
          title: Vervalreden
          type: string
        vervalredenWeergave:
          minLength: 1
          readOnly: true
          title: Vervalreden weergave
          type: string
        verzenddatum:
          description: Datum waarop het besluit verzonden is.
          format: date
          nullable: true
          title: Verzenddatum
          type: string
        zaak:
          description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit
            uitkomst is.
          format: uri
          maxLength: 200
          title: Zaak
          type: string
      required:
      - verantwoordelijkeOrganisatie
      - besluittype
      - datum
      - ingangsdatum
      type: object
    BesluitInformatieObject:
      properties:
        besluit:
          description: URL-referentie naar het BESLUIT.
          format: uri
          title: Besluit
          type: string
        informatieobject:
          description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten
            API) waarin (een deel van) het besluit beschreven is.
          format: uri
          maxLength: 1000
          minLength: 1
          title: Informatieobject
          type: string
        url:
          description: URL-referentie naar dit object. Dit is de unieke identificatie
            en locatie van dit object.
          format: uri
          maxLength: 1000
          minLength: 1
          readOnly: true
          title: Url
          type: string
      required:
      - informatieobject
      - besluit
      type: object
    FieldValidationError:
      properties:
        code:
          description: Systeemcode die het type fout aangeeft
          minLength: 1
          title: Code
          type: string
        name:
          description: Naam van het veld met ongeldige gegevens
          minLength: 1
          title: Name
          type: string
        reason:
          description: Uitleg wat er precies fout is met de gegevens
          minLength: 1
          title: Reason
          type: string
      required:
      - name
      - code
      - reason
      type: object
    Fout:
      properties:
        code:
          description: Systeemcode die het type fout aangeeft
          minLength: 1
          title: Code
          type: string
        detail:
          description: Extra informatie bij de fout, indien beschikbaar
          minLength: 1
          title: Detail
          type: string
        instance:
          description: URI met referentie naar dit specifiek voorkomen van de fout.
            Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld.
          minLength: 1
          title: Instance
          type: string
        status:
          description: De HTTP status code
          title: Status
          type: integer
        title:
          description: Generieke titel voor het type fout
          minLength: 1
          title: Title
          type: string
        type:
          description: URI referentie naar het type fout, bedoeld voor developers
          title: Type
          type: string
      required:
      - code
      - title
      - status
      - detail
      - instance
      type: object
    ValidatieFout:
      properties:
        code:
          description: Systeemcode die het type fout aangeeft
          minLength: 1
          title: Code
          type: string
        detail:
          description: Extra informatie bij de fout, indien beschikbaar
          minLength: 1
          title: Detail
          type: string
        instance:
          description: URI met referentie naar dit specifiek voorkomen van de fout.
            Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld.
          minLength: 1
          title: Instance
          type: string
        invalidParams:
          items:
            $ref: '#/components/schemas/FieldValidationError'
          type: array
        status:
          description: De HTTP status code
          title: Status
          type: integer
        title:
          description: Generieke titel voor het type fout
          minLength: 1
          title: Title
          type: string
        type:
          description: URI referentie naar het type fout, bedoeld voor developers
          title: Type
          type: string
      required:
      - code
      - title
      - status
      - detail
      - instance
      - invalidParams
      type: object
    Wijzigingen:
      properties:
        nieuw:
          description: Volledige JSON body van het object na de actie.
          title: Nieuw
          type: object
        oud:
          description: Volledige JSON body van het object zoals dat bestond voordat
            de actie heeft plaatsgevonden.
          title: Oud
          type: object
      type: object
  securitySchemes:
    JWT-Claims:
      bearerFormat: JWT
      scheme: bearer
      type: http
info:
  contact:
    email: standaarden.ondersteuning@vng.nl
    url: https://vng-realisatie.github.io/gemma-zaken
  description: |
    Een API om een besluitregistratiecomponent (BRC) te benaderen.

    Een BESLUIT wordt veelal schriftelijk vastgelegd maar dit is niet
    noodzakelijk. Omgekeerd kan het voorkomen dat in een INFORMATIEOBJECT meerdere
    besluiten vastgelegd zijn. Vandaar de N:M-relatie naar INFORMATIEOBJECT. Een
    besluit komt voort uit een zaak van de zaakbehandelende organisatie dan wel is
    een besluit van een andere organisatie dat het onderwerp (object) is van een
    zaak van de zaakbehandelende organisatie. BESLUIT heeft dan ook een optionele
    relatie met de ZAAK waarvan het een uitkomst is.

    De typering van BESLUITen is in de Catalogi API (ZTC) ondergebracht in de vorm
    van BESLUITTYPEn.

    **Afhankelijkheden**

    Deze API is afhankelijk van:

    * Catalogi API
    * Notificaties API
    * Documenten API *(optioneel)*
    * Zaken API *(optioneel)*
    * Autorisaties API *(optioneel)*

    **Autorisatie**

    Deze API vereist autorisatie. Je kan de
    [token-tool](https://zaken-auth.vng.cloud/) gebruiken om JWT-tokens te
    genereren.

    ### Notificaties

    Deze API publiceert notificaties op het kanaal `besluiten`.

    **Main resource**

    `besluit`



    **Kenmerken**

    * `verantwoordelijke_organisatie`: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie die het besluit heeft vastgesteld.
    * `besluittype`: URL-referentie naar het BESLUITTYPE (in de Catalogi API).

    **Resources en acties**
    - `besluit`: create, update, destroy


    **Handige links**

    * [Documentatie](https://vng-realisatie.github.io/gemma-zaken/standaard)
    * [Zaakgericht werken](https://vng-realisatie.github.io/gemma-zaken)
  license:
    name: EUPL 1.2
    url: https://opensource.org/licenses/EUPL-1.2
  title: Besluiten API
  version: 1.0.2
openapi: 3.0.0
paths:
  /besluiten:
    get:
      description: Deze lijst kan gefilterd wordt met query-string parameters.
      operationId: besluit_list
      parameters:
      - description: Identificatie van het besluit binnen de organisatie die het besluit
          heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die gegenereerd.
        in: query
        name: identificatie
        required: false
        schema:
          type: string
      - description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie
          die het besluit heeft vastgesteld.
        in: query
        name: verantwoordelijkeOrganisatie
        required: false
        schema:
          type: string
      - description: URL-referentie naar het BESLUITTYPE (in de Catalogi API).
        in: query
        name: besluittype
        required: false
        schema:
          format: uri
          type: string
      - description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit
          uitkomst is.
        in: query
        name: zaak
        required: false
        schema:
          format: uri
          type: string
      - description: Een pagina binnen de gepagineerde set resultaten.
        in: query
        name: page
        required: false
        schema:
          type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  count:
                    type: integer
                  next:
                    format: uri
                    nullable: true
                    type: string
                  previous:
                    format: uri
                    nullable: true
                    type: string
                  results:
                    items:
                      $ref: '#/components/schemas/Besluit'
                    type: array
                required:
                - count
                - results
                type: object
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400'
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.lezen
      summary: Alle BESLUITen opvragen.
      tags:
      - besluiten
    post:
      description: |-
        Indien geen identificatie gegeven is, dan wordt deze automatisch
        gegenereerd.

        Er wordt gevalideerd op:
        - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`
        - geldigheid `verantwoorlijkeOrganisatie` RSIN
        - geldigheid `besluittype` URL - de resource moet opgevraagd kunnen
          worden uit de Catalogi API en de vorm van een BESLUITTYPE hebben.
        - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden
          uit de Zaken API en de vorm van een ZAAK hebben.
        - `datum` in het verleden of nu
        - publicatie `besluittype` - `concept` moet `false` zijn
      operationId: besluit_create
      parameters:
      - description: Content type van de verzoekinhoud.
        in: header
        name: Content-Type
        required: true
        schema:
          enum:
          - application/json
          type: string
      - description: Identifier of the request, traceable throughout the network
        in: header
        name: X-NLX-Logrecord-ID
        required: false
        schema:
          type: string
      - description: Toelichting waarom een bepaald verzoek wordt gedaan
        in: header
        name: X-Audit-Toelichting
        required: false
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/Besluit'
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Besluit'
          description: Created
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
            Location:
              description: URL waar de resource leeft.
              schema:
                format: uri
                type: string
        "400":
          $ref: '#/components/responses/400'
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.aanmaken
      summary: Maak een BESLUIT aan.
      tags:
      - besluiten
  /besluiten/{besluit_uuid}/audittrail:
    get:
      description: Alle audit trail regels behorend bij het BESLUIT.
      operationId: audittrail_list
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AuditTrail'
                type: array
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - audittrails.lezen
      summary: Alle audit trail regels behorend bij het BESLUIT.
      tags:
      - besluiten
    parameters:
    - description: Unieke resource identifier (UUID4)
      in: path
      name: besluit_uuid
      required: true
      schema:
        format: uuid
        type: string
  /besluiten/{besluit_uuid}/audittrail/{uuid}:
    get:
      description: Een specifieke audit trail regel opvragen.
      operationId: audittrail_read
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditTrail'
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - audittrails.lezen
      summary: Een specifieke audit trail regel opvragen.
      tags:
      - besluiten
    parameters:
    - description: Unieke resource identifier (UUID4)
      in: path
      name: besluit_uuid
      required: true
      schema:
        format: uuid
        type: string
    - description: Unieke identificatie van de audit regel.
      in: path
      name: uuid
      required: true
      schema:
        format: uuid
        type: string
  /besluiten/{uuid}:
    delete:
      description: |-
        Verwijder een BESLUIT samen met alle gerelateerde resources binnen deze API.

        **De gerelateerde resources zijn**
        - `BESLUITINFORMATIEOBJECT`
        - audit trail regels
      operationId: besluit_delete
      parameters:
      - description: Identifier of the request, traceable throughout the network
        in: header
        name: X-NLX-Logrecord-ID
        required: false
        schema:
          type: string
      - description: Toelichting waarom een bepaald verzoek wordt gedaan
        in: header
        name: X-Audit-Toelichting
        required: false
        schema:
          type: string
      responses:
        "204":
          description: No content
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.verwijderen
      summary: Verwijder een BESLUIT.
      tags:
      - besluiten
    get:
      description: Een specifiek BESLUIT opvragen.
      operationId: besluit_read
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Besluit'
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.lezen
      summary: Een specifiek BESLUIT opvragen.
      tags:
      - besluiten
    parameters:
    - in: path
      name: uuid
      required: true
      schema:
        format: uuid
        type: string
    patch:
      description: |-
        Er wordt gevalideerd op:
        - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`
        - geldigheid `verantwoorlijkeOrganisatie` RSIN
        - het `besluittype` mag niet gewijzigd worden
        - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden
          uit de Zaken API en de vorm van een ZAAK hebben.
        - `datum` in het verleden of nu
        - publicatie `besluittype` - `concept` moet `false` zijn
      operationId: besluit_partial_update
      parameters:
      - description: Content type van de verzoekinhoud.
        in: header
        name: Content-Type
        required: true
        schema:
          enum:
          - application/json
          type: string
      - description: Identifier of the request, traceable throughout the network
        in: header
        name: X-NLX-Logrecord-ID
        required: false
        schema:
          type: string
      - description: Toelichting waarom een bepaald verzoek wordt gedaan
        in: header
        name: X-Audit-Toelichting
        required: false
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/Besluit'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Besluit'
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400'
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.bijwerken
      summary: Werk een BESLUIT deels bij.
      tags:
      - besluiten
    put:
      description: |-
        Er wordt gevalideerd op:
        - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`
        - geldigheid `verantwoorlijkeOrganisatie` RSIN
        - het `besluittype` mag niet gewijzigd worden
        - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden
          uit de Zaken API en de vorm van een ZAAK hebben.
        - `datum` in het verleden of nu
        - publicatie `besluittype` - `concept` moet `false` zijn
      operationId: besluit_update
      parameters:
      - description: Content type van de verzoekinhoud.
        in: header
        name: Content-Type
        required: true
        schema:
          enum:
          - application/json
          type: string
      - description: Identifier of the request, traceable throughout the network
        in: header
        name: X-NLX-Logrecord-ID
        required: false
        schema:
          type: string
      - description: Toelichting waarom een bepaald verzoek wordt gedaan
        in: header
        name: X-Audit-Toelichting
        required: false
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/Besluit'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Besluit'
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400'
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.bijwerken
      summary: Werk een BESLUIT in zijn geheel bij.
      tags:
      - besluiten
  /besluitinformatieobjecten:
    get:
      description: Deze lijst kan gefilterd wordt met query-string parameters.
      operationId: besluitinformatieobject_list
      parameters:
      - description: URL-referentie naar het BESLUIT.
        in: query
        name: besluit
        required: false
        schema:
          format: uri
          type: string
      - description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten API)
          waarin (een deel van) het besluit beschreven is.
        in: query
        name: informatieobject
        required: false
        schema:
          format: uri
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BesluitInformatieObject'
                type: array
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400'
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.lezen
      summary: Alle BESLUIT-INFORMATIEOBJECT relaties opvragen.
      tags:
      - besluitinformatieobjecten
    post:
      description: |-
        Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee types van
        relaties met andere objecten gerealiseerd:

        **Er wordt gevalideerd op**
        - geldigheid `besluit` URL
        - geldigheid `informatieobject` URL
        - de combinatie `informatieobject` en `besluit` moet uniek zijn
        - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn
            aan `besluit.besluittype`

        **Opmerkingen**
        - De `registratiedatum` wordt door het systeem op 'NU' gezet. De
          `aardRelatie` wordt ook door het systeem gezet.
        - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie
          aangemaakt, echter zonder de relatie-informatie.
      operationId: besluitinformatieobject_create
      parameters:
      - description: Content type van de verzoekinhoud.
        in: header
        name: Content-Type
        required: true
        schema:
          enum:
          - application/json
          type: string
      - description: Identifier of the request, traceable throughout the network
        in: header
        name: X-NLX-Logrecord-ID
        required: false
        schema:
          type: string
      - description: Toelichting waarom een bepaald verzoek wordt gedaan
        in: header
        name: X-Audit-Toelichting
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BesluitInformatieObject'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BesluitInformatieObject'
          description: Created
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
            Location:
              description: URL waar de resource leeft.
              schema:
                format: uri
                type: string
        "400":
          $ref: '#/components/responses/400'
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.aanmaken
      summary: Maak een BESLUIT-INFORMATIEOBJECT relatie aan.
      tags:
      - besluitinformatieobjecten
  /besluitinformatieobjecten/{uuid}:
    delete:
      description: Verwijder een BESLUIT-INFORMATIEOBJECT relatie.
      operationId: besluitinformatieobject_delete
      parameters:
      - description: Identifier of the request, traceable throughout the network
        in: header
        name: X-NLX-Logrecord-ID
        required: false
        schema:
          type: string
      - description: Toelichting waarom een bepaald verzoek wordt gedaan
        in: header
        name: X-Audit-Toelichting
        required: false
        schema:
          type: string
      responses:
        "204":
          description: No content
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.verwijderen
      summary: Verwijder een BESLUIT-INFORMATIEOBJECT relatie.
      tags:
      - besluitinformatieobjecten
    get:
      description: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen.
      operationId: besluitinformatieobject_read
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BesluitInformatieObject'
          description: OK
          headers:
            API-version:
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
              schema:
                type: string
        "401":
          $ref: '#/components/responses/401'
        "403":
          $ref: '#/components/responses/403'
        "404":
          $ref: '#/components/responses/404'
        "406":
          $ref: '#/components/responses/406'
        "409":
          $ref: '#/components/responses/409'
        "410":
          $ref: '#/components/responses/410'
        "415":
          $ref: '#/components/responses/415'
        "429":
          $ref: '#/components/responses/429'
        "500":
          $ref: '#/components/responses/500'
      security:
      - JWT-Claims:
        - besluiten.lezen
      summary: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen.
      tags:
      - besluitinformatieobjecten
    parameters:
    - description: Unieke resource identifier (UUID4)
      in: path
      name: uuid
      required: true
      schema:
        format: uuid
        type: string
security:
- JWT-Claims: []
servers:
- url: https://besluiten-api.vng.cloud/api/v1
tags:
- description: ""
  name: besluiten
- description: ""
  name: besluitinformatieobjecten
