openapi: 3.0.0
info:
  title: Notificaties API
  description: "Een API om een notificatierouteringscomponent te benaderen.\n\nDeze\
    \ API voorziet in drie functionaliteiten voor notificaties:\n\n* registreren van\
    \ kanalen (=exchanges)\n* abonneren van consumers op kanalen\n* ontvangen en routeren\
    \ van berichten\n\n**Registreren van kanalen**\n\nEen component dekt een bepaald\
    \ domein af, en heeft het recht om hiervoor een\nkanaal te registeren waarop eigen\
    \ notificaties verstuurd worden. Een kanaal\nis uniek in naam. Een component dient\
    \ dus te controleren of een kanaal al\nbestaat voor het registreren. Bij het registeren\
    \ van kanalen wordt een\ndocumentatielink verwacht die beschrijft welke events\
    \ en kenmerken van\ntoepassing zijn op het kanaal.\n\n**Abonneren**\n\nConsumers\
    \ kunnen een abonnement aanmaken voor een of meerdere kanalen. Per\nkanaal kan\
    \ op de kenmerken van het kanaal gefilterd worden. Consumers dienen\nzelf een\
    \ endpoint te bouwen waarop berichten afgeleverd (kunnen) worden.\n\n**Routeren\
    \ van berichten**\n\nBronnen sturen berichten naar deze API, die vervolgens de\
    \ berichten onveranderd\nrouteert naar alle abonnees.\n\n**Afhankelijkheden**\n\
    \nDeze API is afhankelijk van:\n\n* Autorisaties API\n\n**Autorisatie**\n\nDeze\
    \ API vereist autorisatie. Je kan de\n[token-tool](https://zaken-auth.vng.cloud/)\
    \ gebruiken om JWT-tokens te\ngenereren.\n\n**Handige links**\n\n* [Documentatie](https://zaakgerichtwerken.vng.cloud/standaard)\n\
    * [Zaakgericht werken](https://zaakgerichtwerken.vng.cloud)\n"
  contact:
    url: https://zaakgerichtwerken.vng.cloud
    email: standaarden.ondersteuning@vng.nl
  license:
    name: EUPL 1.2
    url: https://opensource.org/licenses/EUPL-1.2
  version: 1.0.0
security:
  - JWT-Claims: []
paths:
  /abonnement:
    get:
      operationId: abonnement_list
      description: Alle ABONNEMENTen opvragen.
      responses:
        '200':
          description: OK
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Abonnement'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - abonnement
      security:
        - JWT-Claims:
            - (notificaties.consumeren | notificaties.publiceren)
    post:
      operationId: abonnement_create
      description: Maak een ABONNEMENT aan.
      requestBody:
        $ref: '#/components/requestBodies/Abonnement'
      responses:
        '201':
          description: Created
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
            Location:
              schema:
                type: string
                format: uri
              description: URL waar de resource leeft.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Abonnement'
        '400':
          description: Bad request
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidatieFout'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - abonnement
      security:
        - JWT-Claims:
            - notificaties.consumeren
    parameters: []
  /abonnement/{uuid}:
    get:
      operationId: abonnement_read
      description: Een specifiek ABONNEMENT opvragen.
      responses:
        '200':
          description: OK
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Abonnement'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '404':
          description: Not found
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - abonnement
      security:
        - JWT-Claims:
            - (notificaties.consumeren | notificaties.publiceren)
    put:
      operationId: abonnement_update
      description: Werk een ABONNEMENT in zijn geheel bij.
      requestBody:
        $ref: '#/components/requestBodies/Abonnement'
      responses:
        '200':
          description: OK
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Abonnement'
        '400':
          description: Bad request
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidatieFout'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '404':
          description: Not found
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - abonnement
      security:
        - JWT-Claims:
            - notificaties.consumeren
    patch:
      operationId: abonnement_partial_update
      description: Werk een ABONNEMENT deels bij.
      requestBody:
        $ref: '#/components/requestBodies/Abonnement'
      responses:
        '200':
          description: OK
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Abonnement'
        '400':
          description: Bad request
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidatieFout'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '404':
          description: Not found
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - abonnement
      security:
        - JWT-Claims:
            - notificaties.consumeren
    delete:
      operationId: abonnement_delete
      description: Verwijder een ABONNEMENT.
      responses:
        '204':
          description: No content
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '404':
          description: Not found
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - abonnement
      security:
        - JWT-Claims:
            - notificaties.consumeren
    parameters:
      - name: uuid
        in: path
        description: Unique resource identifier (UUID4)
        required: true
        schema:
          type: string
          format: uuid
  /kanaal:
    get:
      operationId: kanaal_list
      description: Alle KANAALen opvragen.
      parameters:
        - name: naam
          in: query
          description: Naam van het KANAAL (ook wel "Exchange" genoemd) dat de bron
            vertegenwoordigd.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Kanaal'
        '400':
          description: Bad request
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidatieFout'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - kanaal
      security:
        - JWT-Claims:
            - (notificaties.publiceren | notificaties.consumeren)
    post:
      operationId: kanaal_create
      description: Maak een KANAAL aan.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Kanaal'
        required: true
      responses:
        '201':
          description: Created
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
            Location:
              schema:
                type: string
                format: uri
              description: URL waar de resource leeft.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Kanaal'
        '400':
          description: Bad request
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidatieFout'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - kanaal
      security:
        - JWT-Claims:
            - notificaties.publiceren
    parameters: []
  /kanaal/{uuid}:
    get:
      operationId: kanaal_read
      description: Een specifiek KANAAL opvragen.
      responses:
        '200':
          description: OK
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Kanaal'
        '401':
          description: Unauthorized
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '403':
          description: Forbidden
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '404':
          description: Not found
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '406':
          description: Not acceptable
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '409':
          description: Conflict
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '410':
          description: Gone
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '415':
          description: Unsupported media type
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '429':
          description: Too many requests
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
        '500':
          description: Internal server error
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Fout'
      tags:
        - kanaal
      security:
        - JWT-Claims:
            - (notificaties.publiceren | notificaties.consumeren)
    parameters:
      - name: uuid
        in: path
        description: Unique resource identifier (UUID4)
        required: true
        schema:
          type: string
          format: uuid
  /notificaties:
    post:
      operationId: notificaties_create
      description: Publiceer een notificatie.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Message'
        required: true
      responses:
        '200':
          description: ''
          headers:
            API-version:
              schema:
                type: string
              description: 'Geeft een specifieke API-versie aan in de context van
                een specifieke aanroep. Voorbeeld: 1.2.1.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
      tags:
        - notificaties
      security:
        - JWT-Claims:
            - notificaties.publiceren
    parameters: []
servers:
  - url: https://notificaties-api.vng.cloud/api/v1
components:
  requestBodies:
    Abonnement:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Abonnement'
      required: true
  securitySchemes:
    JWT-Claims:
      bearerFormat: JWT
      scheme: bearer
      type: http
  schemas:
    FilterGroup:
      title: kanalen
      description: Een lijst van kanalen en filters waarop het ABONNEMENT wordt afgenomen.
      required:
        - naam
      type: object
      properties:
        filters:
          title: Filters
          description: Map van kenmerken (sleutel/waarde) waarop notificaties gefilterd
            worden. Alleen notificaties waarvan de kenmerken voldoen aan het filter
            worden doorgestuurd naar de afnemer van het ABONNEMENT.
          type: object
          additionalProperties:
            title: kenmerk
            description: Een waarde behorende bij de sleutel.
            type: string
            maxLength: 1000
            minLength: 1
        naam:
          title: Naam
          description: De naam van het KANAAL (`KANAAL.naam`) waarop een abonnement
            is of wordt genomen.
          type: string
          minLength: 1
    Abonnement:
      required:
        - callbackUrl
        - auth
        - kanalen
      type: object
      properties:
        url:
          title: Url
          description: URL-referentie naar dit object. Dit is de unieke identificatie
            en locatie van dit object.
          type: string
          format: uri
          readOnly: true
          maxLength: 1000
          minLength: 1
        callbackUrl:
          title: Callback URL
          description: De URL waar notificaties naar toe gestuurd dienen te worden.
            Deze URL dient uit te komen bij een API die geschikt is om notificaties
            op te ontvangen.
          type: string
          format: uri
          maxLength: 200
          minLength: 1
        auth:
          title: Autorisatie header
          description: 'Autorisatie header invulling voor het vesturen naar de "Callback
            URL". Voorbeeld: Bearer a4daa31...'
          type: string
          maxLength: 1000
          minLength: 1
        kanalen:
          description: Een lijst van kanalen en filters waarop het ABONNEMENT wordt
            afgenomen.
          type: array
          items:
            $ref: '#/components/schemas/FilterGroup'
    Fout:
      required:
        - code
        - title
        - status
        - detail
        - instance
      type: object
      properties:
        type:
          title: Type
          description: URI referentie naar het type fout, bedoeld voor developers
          type: string
        code:
          title: Code
          description: Systeemcode die het type fout aangeeft
          type: string
          minLength: 1
        title:
          title: Title
          description: Generieke titel voor het type fout
          type: string
          minLength: 1
        status:
          title: Status
          description: De HTTP status code
          type: integer
        detail:
          title: Detail
          description: Extra informatie bij de fout, indien beschikbaar
          type: string
          minLength: 1
        instance:
          title: Instance
          description: URI met referentie naar dit specifiek voorkomen van de fout.
            Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld.
          type: string
          minLength: 1
    FieldValidationError:
      required:
        - name
        - code
        - reason
      type: object
      properties:
        name:
          title: Name
          description: Naam van het veld met ongeldige gegevens
          type: string
          minLength: 1
        code:
          title: Code
          description: Systeemcode die het type fout aangeeft
          type: string
          minLength: 1
        reason:
          title: Reason
          description: Uitleg wat er precies fout is met de gegevens
          type: string
          minLength: 1
    ValidatieFout:
      required:
        - code
        - title
        - status
        - detail
        - instance
        - invalidParams
      type: object
      properties:
        type:
          title: Type
          description: URI referentie naar het type fout, bedoeld voor developers
          type: string
        code:
          title: Code
          description: Systeemcode die het type fout aangeeft
          type: string
          minLength: 1
        title:
          title: Title
          description: Generieke titel voor het type fout
          type: string
          minLength: 1
        status:
          title: Status
          description: De HTTP status code
          type: integer
        detail:
          title: Detail
          description: Extra informatie bij de fout, indien beschikbaar
          type: string
          minLength: 1
        instance:
          title: Instance
          description: URI met referentie naar dit specifiek voorkomen van de fout.
            Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld.
          type: string
          minLength: 1
        invalidParams:
          type: array
          items:
            $ref: '#/components/schemas/FieldValidationError'
    Kanaal:
      required:
        - naam
      type: object
      properties:
        url:
          title: Url
          description: URL-referentie naar dit object. Dit is de unieke identificatie
            en locatie van dit object.
          type: string
          format: uri
          readOnly: true
          maxLength: 1000
          minLength: 1
        naam:
          title: Naam
          description: Naam van het KANAAL (ook wel "Exchange" genoemd) dat de bron
            vertegenwoordigd.
          type: string
          maxLength: 50
          minLength: 1
        documentatieLink:
          title: Documentatie link
          description: URL naar documentatie.
          type: string
          format: uri
          maxLength: 200
        filters:
          description: Lijst van mogelijke filter kenmerken van een KANAAL. Deze filter
            kenmerken kunnen worden gebruikt bij het aanmaken van een ABONNEMENT.
          type: array
          items:
            title: Filters
            type: string
            maxLength: 100
            minLength: 1
    Message:
      required:
        - kanaal
        - hoofdObject
        - resource
        - resourceUrl
        - actie
        - aanmaakdatum
      type: object
      properties:
        kanaal:
          title: kanaal
          description: De naam van het kanaal (`KANAAL.naam`) waar het bericht op
            moet worden gepubliceerd.
          type: string
          maxLength: 50
          minLength: 1
        hoofdObject:
          title: hoofd object
          description: URL-referentie naar het hoofd object van de publicerende API
            die betrekking heeft op de `resource`.
          type: string
          format: uri
          minLength: 1
        resource:
          title: resource
          description: De resourcenaam waar de notificatie over gaat.
          type: string
          maxLength: 100
          minLength: 1
        resourceUrl:
          title: resource URL
          description: URL-referentie naar de `resource` van de publicerende API.
          type: string
          format: uri
          minLength: 1
        actie:
          title: actie
          description: De actie die door de publicerende API is gedaan. De publicerende
            API specificeert de toegestane acties.
          type: string
          maxLength: 100
          minLength: 1
        aanmaakdatum:
          title: aanmaakdatum
          description: Datum en tijd waarop de actie heeft plaatsgevonden.
          type: string
          format: date-time
        kenmerken:
          title: kenmerken
          description: Mapping van kenmerken (sleutel/waarde) van de notificatie.
            De publicerende API specificeert de toegestane kenmerken.
          type: object
          additionalProperties:
            title: kenmerk
            description: Een waarde behorende bij de sleutel.
            type: string
            maxLength: 1000
            minLength: 1
