openapi: 3.1.1
info:
  title: Documenten API
  version: 1.5.0
  description: |-
    Een API om een documentregistratiecomponent (DRC) te benaderen.

    In een documentregistratiecomponent worden INFORMATIEOBJECTen opgeslagen. Een
    INFORMATIEOBJECT is een digitaal document voorzien van meta-gegevens.
    INFORMATIEOBJECTen kunnen aan andere objecten zoals zaken en besluiten worden
    gerelateerd (maar dat hoeft niet) en kunnen GEBRUIKSRECHTen hebben.

    **Uploaden van bestanden**

    Bestanden kunnen groter zijn dan de minimum die door providers ondersteund moet worden.
    Voor kleine bestanden kan de inhoud base64-encoded meegestuurd worden in de JSON.
    Voor grote bestanden (>4GB) moet de chunked upload workflow gebruikt worden via BESTANDSDELen.

    **Afhankelijkheden**

    Deze API is afhankelijk van:
    * Catalogi API
    * Notificaties API
    * Autorisaties API *(optioneel)*
    * Zaken API *(optioneel)*

    **Autorisatie**

    Deze API vereist autorisatie via JWT tokens.
  contact:
    url: https://vng-realisatie.github.io/gemma-zaken
    email: standaarden.ondersteuning@vng.nl
  license:
    name: EUPL 1.2
    url: https://opensource.org/licenses/EUPL-1.2
servers:
- url: https://cg-dmf.dev.baseflow.com
  description: Dit systeem (https://cg-dmf.dev.baseflow.com)
- url: https://cg-dmf.dev.baseflow.com
  description: Baseflow dev
- url: https://gzac-dmf.commonground.test.utrecht.nl
  description: Utrecht test
paths:
  /documenten/api/v1/enkelvoudiginformatieobjecten:
    post:
      operationId: enkelvoudiginformatieobjecten_create
      tags:
      - enkelvoudiginformatieobjecten
      summary: Maak een ENKELVOUDIGINFORMATIEOBJECT aan.
      description: Maak een ENKELVOUDIGINFORMATIEOBJECT aan.
      requestBody:
        description: Gegevens van het aan te maken INFORMATIEOBJECT.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EnkelvoudigInformatieObjectRequest"
        required: true
      responses:
        "201":
          description: Aangemaakt.
          headers:
            Location:
              description: URL van het aangemaakte INFORMATIEOBJECT.
              schema:
                type: string
            API-version:
              description: Geeft de specifieke API-versie aan.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnkelvoudigInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    get:
      operationId: enkelvoudiginformatieobjecten_list
      tags:
      - enkelvoudiginformatieobjecten
      summary: Alle (enkelvoudige) INFORMATIEOBJECTen opvragen.
      description: Geeft een gepagineerde lijst van ENKELVOUDIGINFORMATIEOBJECTen.
        Alleen de laatste versie van elk INFORMATIEOBJECT wordt getoond.
      parameters:
      - name: bronorganisatie
        in: query
        description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie
          die het INFORMATIEOBJECT heeft gecreëerd of heeft ontvangen en als eerste
          in een samenwerkingsketen heeft vastgelegd.
        schema:
          type: string
      - name: identificatie
        in: query
        description: Een binnen een gegeven context ondubbelzinnige referentie naar
          het INFORMATIEOBJECT.
        schema:
          type: string
      - name: trefwoorden
        in: query
        description: Een lijst van trefwoorden gescheiden door comma's.
        schema:
          type: string
      - name: expand
        in: query
        description: Sluit de gespecifieerde gerelateerde resources in het antwoord
          in.
        schema:
          type: string
      - name: page
        in: query
        description: Een pagina binnen de gepagineerde set resultaten.
        schema:
          type: string
      - name: pageSize
        in: query
        description: "Het aantal resultaten terug te geven per pagina. (default: 100,\
          \ maximum: 500)."
        schema:
          type: string
      - name: informatieobjecttype
        in: query
        description: '**EXPERIMENTEEL** URL-referentie naar de gerelateerde INFORMATIEOBJECTTYPE
          (in deze of een andere API).'
        schema:
          type: string
      - name: vertrouwelijkheidaanduiding
        in: query
        description: "**EXPERIMENTEEL** De vertrouwelijkheidaanduiding van het INFORMATIEOBJECT.\
          \ Komma-gescheiden lijst van waarden: openbaar, beperkt_openbaar, intern,\
          \ zaakvertrouwelijk, vertrouwelijk, confidentieel, geheim, zeer_geheim."
        schema:
          type: string
      - name: titel
        in: query
        description: "**EXPERIMENTEEL** De titel van het INFORMATIEOBJECT (bevat de\
          \ gegeven waarde, hoofdletterongevoelig)."
        schema:
          type: string
      - name: auteur
        in: query
        description: "**EXPERIMENTEEL** De persoon of organisatie die dit INFORMATIEOBJECT\
          \ heeft aangemaakt (bevat de gegeven waarde, hoofdletterongevoelig)."
        schema:
          type: string
      - name: status
        in: query
        description: "**EXPERIMENTEEL** Filter op de status van het INFORMATIEOBJECT.\
          \ Mogelijke waarden: in_bewerking, ter_vaststelling, definitief, gearchiveerd."
        schema:
          type: string
      - name: beschrijving
        in: query
        description: "**EXPERIMENTEEL** De beschrijving van het INFORMATIEOBJECT (bevat\
          \ de gegeven waarde, hoofdletterongevoelig)."
        schema:
          type: string
      - name: trefwoorden__overlap
        in: query
        description: "**EXPERIMENTEEL** Een lijst van trefwoorden gescheiden door\
          \ komma's, geeft alle EnkelvoudigInformatieObjecten terug die ten minste\
          \ een van de opgegeven trefwoorden hebben."
        schema:
          type: string
      - name: locked
        in: query
        description: '**EXPERIMENTEEL** Filter op vergrendeld (true) of ontgrendeld
          (false).'
        schema:
          type: string
      - name: creatiedatum__gte
        in: query
        description: "**EXPERIMENTEEL** De aanmakingsdatum van het INFORMATIEOBJECT\
          \ (groter of gelijk aan de gegeven datum, formaat: YYYY-MM-DD)."
        schema:
          type: string
      - name: creatiedatum__lte
        in: query
        description: "**EXPERIMENTEEL** De aanmakingsdatum van het INFORMATIEOBJECT\
          \ (kleiner of gelijk aan de gegeven datum, formaat: YYYY-MM-DD)."
        schema:
          type: string
      - name: registratiedatum__gte
        in: query
        description: "**EXPERIMENTEEL** De registratiedatum (`beginRegistratie`) van\
          \ het INFORMATIEOBJECT (groter of gelijk aan de gegeven datum/tijd, formaat:\
          \ date-time, bijv. 2025-01-01T00:00:00)."
        schema:
          type: string
      - name: registratiedatum__lte
        in: query
        description: "**EXPERIMENTEEL** De registratiedatum (`beginRegistratie`) van\
          \ het INFORMATIEOBJECT (kleiner of gelijk aan de gegeven datum/tijd, formaat:\
          \ date-time, bijv. 2025-01-01T00:00:00)."
        schema:
          type: string
      - name: ordering
        in: query
        description: "**EXPERIMENTEEL** Sorteer op één of meer velden (komma-gescheiden).\
          \ Gebruik een `-` prefix voor aflopende volgorde. Mogelijke waarden: auteur,\
          \ bestandsomvang, creatiedatum, formaat, status, titel, vertrouwelijkheidaanduiding\
          \ (en hun `-`-varianten)."
        schema:
          type: string
      - name: objectinformatieobjecten__object
        in: query
        description: '**EXPERIMENTEEL** URL-referentie naar het gerelateerde object
          (in deze of een andere API).'
        schema:
          type: string
      - name: objectinformatieobjecten__objectType
        in: query
        description: "**EXPERIMENTEEL** Het type van het gerelateerde object. Mogelijke\
          \ waarden: zaak, besluit, etc."
        schema:
          type: string
      responses:
        "200":
          description: Lijst van ENKELVOUDIGINFORMATIEOBJECTen.
          content:
            application/json:
              schema:
                type: object
                required:
                - count
                - results
                properties:
                  count:
                    type: integer
                  next:
                    type:
                    - string
                    - "null"
                  previous:
                    type:
                    - string
                    - "null"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/EnkelvoudigInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/_zoek:
    post:
      operationId: enkelvoudiginformatieobjecten_zoek
      tags:
      - enkelvoudiginformatieobjecten
      summary: Voer een zoekopdracht uit op ENKELVOUDIGINFORMATIEOBJECTen.
      description: Zoeken/filteren op UUID of andere velden. Gebruik dit endpoint
        voor zoekopdrachten met UUIDs.
      requestBody:
        description: Zoekcriteria.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/InformatieObjectZoekRequest"
        required: true
      responses:
        "200":
          description: Lijst van gevonden ENKELVOUDIGINFORMATIEOBJECTen.
          content:
            application/json:
              schema:
                type: object
                required:
                - count
                - results
                properties:
                  count:
                    type: integer
                  next:
                    type:
                    - string
                    - "null"
                  previous:
                    type:
                    - string
                    - "null"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/EnkelvoudigInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/{uuid}:
    put:
      operationId: enkelvoudiginformatieobjecten_update
      tags:
      - enkelvoudiginformatieobjecten
      summary: Werk een ENKELVOUDIGINFORMATIEOBJECT in zijn geheel bij.
      description: Dit creëert altijd een nieuwe versie van het INFORMATIEOBJECT.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      requestBody:
        description: Bijgewerkte gegevens van het INFORMATIEOBJECT.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EnkelvoudigInformatieObjectRequest"
        required: true
      responses:
        "200":
          description: OK.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnkelvoudigInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    delete:
      operationId: enkelvoudiginformatieobjecten_delete
      tags:
      - enkelvoudiginformatieobjecten
      summary: Verwijder een ENKELVOUDIGINFORMATIEOBJECT.
      description: Verwijdert het INFORMATIEOBJECT en alle bijbehorende versies. Alleen
        mogelijk als er geen OBJECTINFORMATIEOBJECTen aan gerelateerd zijn.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "204":
          description: No content.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
        "409":
          description: "Conflict: INFORMATIEOBJECT is vergrendeld."
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    get:
      operationId: enkelvoudiginformatieobjecten_read
      tags:
      - enkelvoudiginformatieobjecten
      summary: Een specifiek ENKELVOUDIGINFORMATIEOBJECT opvragen.
      description: Geeft het INFORMATIEOBJECT terug. Standaard de laatste versie.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      - name: versie
        in: query
        description: Specifieke versie van het INFORMATIEOBJECT.
        schema:
          type: string
      - name: registratieOp
        in: query
        description: Filtert op de registratiedatum.
        schema:
          type: string
      - name: expand
        in: query
        description: Sluit de gespecifieerde gerelateerde resources in het antwoord
          in.
        schema:
          type: string
      - name: If-None-Match
        in: header
        description: "Conditioneel GET: geef de ETag-waarde van de eerder ontvangen\
          \ response mee. De server antwoordt met 304 Not Modified als de resource\
          \ niet gewijzigd is."
        schema:
          type: string
      responses:
        "200":
          description: OK.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnkelvoudigInformatieObject"
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    head:
      operationId: enkelvoudiginformatieobjecten_headers
      tags:
      - enkelvoudiginformatieobjecten
      summary: De headers voor een specifiek ENKELVOUDIGINFORMATIEOBJECT opvragen.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK.
        "400":
          description: "Bad request: ontbrekende of ongeldige UUID."
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    patch:
      operationId: enkelvoudiginformatieobjecten_partial_update
      tags:
      - enkelvoudiginformatieobjecten
      summary: Werk een ENKELVOUDIGINFORMATIEOBJECT deels bij.
      description: Dit creëert altijd een nieuwe versie van het INFORMATIEOBJECT.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      requestBody:
        description: Gedeeltelijk bijgewerkte gegevens van het INFORMATIEOBJECT.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EnkelvoudigInformatieObjectRequest"
      responses:
        "200":
          description: OK.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnkelvoudigInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/{uuid}/download:
    get:
      operationId: enkelvoudiginformatieobjecten_download
      tags:
      - enkelvoudiginformatieobjecten
      summary: Download de binaire data van het INFORMATIEOBJECT.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK — binaire bestandsinhoud.
          headers:
            Content-Disposition:
              description: Bestandsnaam voor de download.
              schema:
                type: string
            Content-Type:
              description: MIME-type van het bestand.
              schema:
                type: string
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/{uuid}/lock:
    post:
      operationId: enkelvoudiginformatieobjecten_lock
      tags:
      - enkelvoudiginformatieobjecten
      summary: Vergrendel een ENKELVOUDIGINFORMATIEOBJECT.
      description: Voert een checkout uit waardoor het INFORMATIEOBJECT vergrendeld
        wordt met een lock-waarde.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK — lock-waarde teruggegeven.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockToken"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
        "409":
          description: "Conflict: INFORMATIEOBJECT is al vergrendeld."
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/{uuid}/unlock:
    post:
      operationId: enkelvoudiginformatieobjecten_unlock
      tags:
      - enkelvoudiginformatieobjecten
      summary: Ontgrendel een ENKELVOUDIGINFORMATIEOBJECT.
      description: Heft de checkout op waardoor het INFORMATIEOBJECT ontgrendeld wordt.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "204":
          description: No content.
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
        "409":
          description: "Conflict: ongeldige lock-waarde of niet vergrendeld."
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/{uuid}/audittrail/{auditTrailUuid}:
    get:
      operationId: enkelvoudiginformatieobjecten_audittrail_read
      tags:
      - audittrail
      summary: Een specifieke audit trail regel opvragen.
      parameters:
      - name: uuid
        in: path
        description: UUID van het INFORMATIEOBJECT.
        required: true
        schema:
          type: string
      - name: auditTrailUuid
        in: path
        description: UUID van de audit trail regel.
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuditTrailRegel"
        "400":
          description: "Bad request: ongeldige UUID."
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/enkelvoudiginformatieobjecten/{uuid}/audittrail:
    get:
      operationId: enkelvoudiginformatieobjecten_audittrail_list
      tags:
      - audittrail
      summary: Alle audit trail regels behorend bij het INFORMATIEOBJECT opvragen.
      parameters:
      - name: uuid
        in: path
        description: UUID van het INFORMATIEOBJECT.
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Lijst van audit trail regels.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AuditTrailRegel"
        "400":
          description: "Bad request: ongeldige UUID."
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/objectinformatieobjecten:
    post:
      operationId: objectinformatieobjecten_create
      tags:
      - objectinformatieobjecten
      summary: Maak een ObjectInformatieObject relatie aan.
      description: "LET OP: Dit endpoint hoor je als consumer niet zelf aan te spreken.\
        \ Andere API's gebruiken dit endpoint bij het synchroniseren van relaties."
      requestBody:
        description: Gegevens van de aan te maken relatie.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ObjectInformatieObjectRequest"
        required: true
      responses:
        "201":
          description: Aangemaakt.
          headers:
            Location:
              description: URL van de aangemaakte relatie.
              schema:
                type: string
            API-version:
              description: Geeft de specifieke API-versie aan.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ObjectInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    delete:
      operationId: objectinformatieobjecten_delete_by_informatieobject
      tags:
      - objectinformatieobjecten
      summary: Verwijder ObjectInformatieObject relaties op basis van informatieobject
        of object.
      description: '**EXPERIMENTEEL** Verwijdert alle relaties die gekoppeld zijn
        aan de opgegeven EIO (`informatieobject`) of het opgegeven subject-object
        (`object`). Precies één van beide parameters is verplicht; het opgeven van
        beide geeft een 400.'
      parameters:
      - name: informatieobject
        in: query
        description: URL van de EIO (informatieobject) waarvoor alle relaties verwijderd
          worden.
        schema:
          type: string
      - name: object
        in: query
        description: URL van het subject-object waarvoor alle relaties verwijderd
          worden.
        schema:
          type: string
      responses:
        "204":
          description: No content.
        "400":
          description: "Bad request: ontbrekende of ongeldige parameter."
        "404":
          description: "Not found: geen relaties gevonden voor de opgegeven parameter."
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    get:
      operationId: objectinformatieobjecten_list
      tags:
      - objectinformatieobjecten
      summary: Alle ObjectInformatieObject relaties opvragen.
      description: "Geeft een lijst van OBJECTINFORMATIEOBJECT relaties, gefilterd\
        \ via query-parameters."
      parameters:
      - name: informatieobject
        in: query
        description: Filter op URL-referentie naar het INFORMATIEOBJECT.
        schema:
          type: string
      - name: object
        in: query
        description: Filter op URL-referentie naar het gerelateerde OBJECT.
        schema:
          type: string
      - name: expand
        in: query
        description: Velden om te expanderen.
        schema:
          type: string
      - name: page
        in: query
        description: '**EXPERIMENTEEL** Paginanummer.'
        schema:
          type: string
      - name: pageSize
        in: query
        description: '**EXPERIMENTEEL** Aantal resultaten per pagina.'
        schema:
          type: string
      responses:
        "200":
          description: Lijst van ObjectInformatieObject relaties.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ObjectInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/objectinformatieobjecten/{uuid}:
    delete:
      operationId: objectinformatieobjecten_delete
      tags:
      - objectinformatieobjecten
      summary: Verwijder een ObjectInformatieObject relatie.
      description: "LET OP: Dit endpoint hoor je als consumer niet zelf aan te spreken.\
        \ Andere API's gebruiken dit endpoint bij het synchroniseren van relaties."
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "204":
          description: No content.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    get:
      operationId: objectinformatieobjecten_read
      tags:
      - objectinformatieobjecten
      summary: Een specifieke ObjectInformatieObject relatie opvragen.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ObjectInformatieObject"
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    head:
      operationId: objectinformatieobjecten_headers
      tags:
      - objectinformatieobjecten
      summary: De headers voor een specifieke ObjectInformatieObject opvragen.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK.
        "400":
          description: "Bad request: ontbrekende of ongeldige UUID."
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/subjectinformatieobjecten:
    post:
      operationId: subjectinformatieobjecten_create
      tags:
      - subjectinformatieobjecten
      summary: Maak een SubjectInformatieObject relatie aan.
      description: "LET OP: Dit endpoint hoor je als consumer niet zelf aan te spreken.\
        \ Andere API's gebruiken dit endpoint bij het synchroniseren van relaties."
      requestBody:
        description: Gegevens van de aan te maken relatie.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ObjectInformatieObjectRequest"
        required: true
      responses:
        "201":
          description: Aangemaakt.
          headers:
            Location:
              description: URL van de aangemaakte relatie.
              schema:
                type: string
            API-version:
              description: Geeft de specifieke API-versie aan.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ObjectInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    delete:
      operationId: subjectinformatieobjecten_delete_by_informatieobject
      tags:
      - subjectinformatieobjecten
      summary: Verwijder SubjectInformatieObject relaties op basis van informatieobject
        of object.
      description: '**EXPERIMENTEEL** Verwijdert alle relaties die gekoppeld zijn
        aan de opgegeven EIO (`informatieobject`) of het opgegeven subject-object
        (`object`). Precies één van beide parameters is verplicht; het opgeven van
        beide geeft een 400.'
      parameters:
      - name: informatieobject
        in: query
        description: URL van de EIO (informatieobject) waarvoor alle relaties verwijderd
          worden.
        schema:
          type: string
      - name: object
        in: query
        description: URL van het subject-object waarvoor alle relaties verwijderd
          worden.
        schema:
          type: string
      responses:
        "204":
          description: No content.
        "400":
          description: "Bad request: ontbrekende of ongeldige parameter."
        "404":
          description: "Not found: geen relaties gevonden voor de opgegeven parameter."
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    get:
      operationId: subjectinformatieobjecten_list
      tags:
      - subjectinformatieobjecten
      summary: Alle SubjectInformatieObject relaties opvragen.
      description: "Geeft een lijst van OBJECTINFORMATIEOBJECT relaties, gefilterd\
        \ via query-parameters."
      parameters:
      - name: informatieobject
        in: query
        description: Filter op URL-referentie naar het INFORMATIEOBJECT.
        schema:
          type: string
      - name: object
        in: query
        description: Filter op URL-referentie naar het gerelateerde OBJECT.
        schema:
          type: string
      - name: expand
        in: query
        description: Velden om te expanderen.
        schema:
          type: string
      - name: page
        in: query
        description: '**EXPERIMENTEEL** Paginanummer.'
        schema:
          type: string
      - name: pageSize
        in: query
        description: '**EXPERIMENTEEL** Aantal resultaten per pagina.'
        schema:
          type: string
      responses:
        "200":
          description: Lijst van SubjectInformatieObject relaties.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ObjectInformatieObject"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/subjectinformatieobjecten/{uuid}:
    delete:
      operationId: subjectinformatieobjecten_delete
      tags:
      - subjectinformatieobjecten
      summary: Verwijder een SubjectInformatieObject relatie.
      description: "LET OP: Dit endpoint hoor je als consumer niet zelf aan te spreken.\
        \ Andere API's gebruiken dit endpoint bij het synchroniseren van relaties."
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "204":
          description: No content.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    get:
      operationId: subjectinformatieobjecten_read
      tags:
      - subjectinformatieobjecten
      summary: Een specifieke SubjectInformatieObject relatie opvragen.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ObjectInformatieObject"
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
    head:
      operationId: subjectinformatieobjecten_headers
      tags:
      - subjectinformatieobjecten
      summary: De headers voor een specifieke SubjectInformatieObject opvragen.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4).
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK.
        "400":
          description: "Bad request: ontbrekende of ongeldige UUID."
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
  /documenten/api/v1/bestandsdelen/{uuid}:
    put:
      operationId: bestandsdelen_update
      tags:
      - bestandsdelen
      summary: Upload een BESTANDSDEEL.
      description: Upload een BESTANDSDEEL als onderdeel van de chunked upload workflow
        voor grote bestanden. De request body is multipart/form-data met velden 'inhoud'
        (binary) en 'lock' (string). Wanneer alle delen zijn geupload kan het bovenliggende
        INFORMATIEOBJECT worden ontgrendeld.
      parameters:
      - name: uuid
        in: path
        description: Unieke resource identifier (UUID4) van het BESTANDSDEEL.
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK – BESTANDSDEEL bijgewerkt.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BestandsDeel"
        "400":
          description: Bad request.
        "401":
          description: Unauthorized.
        "403":
          description: Forbidden – ongeldige lock token.
        "404":
          description: Not found.
      security:
      - auth-jwt:
        - openid
        - profile
        - email
      - auth-zgw: []
components:
  schemas:
    Ondertekening:
      type: object
      title: Ondertekening
      description: Aanduiding van de rechtskracht van een INFORMATIEOBJECT. Mag niet
        van een waarde zijn voorzien als de `status` de waarde 'in_bewerking' of 'ter_vaststelling'
        heeft.
      required:
      - soort
      - datum
      properties:
        soort:
          type: string
          description: "Het type ondertekening: analoog, digitaal of pki."
          enum:
          - analoog
          - digitaal
          - pki
        datum:
          type: string
          description: "De datum waarop ondertekend is (ISO 8601, formaat YYYY-MM-DD)."
          format: date
      example:
        soort: digitaal
        datum: 2024-01-15
    Integriteit:
      type: object
      title: Integriteit
      description: "Uitdrukking van mate van volledigheid en onbeschadigd zijn van\
        \ digitaal bestand. Bevat het gebruikte algoritme, de berekende waarde en\
        \ de datum."
      required:
      - waarde
      properties:
        algoritme:
          type: string
          description: Het hash-algoritme waarmee de integriteitswaarde is berekend.
          enum:
          - crc_16
          - crc_32
          - crc_64
          - fletcher_4
          - fletcher_8
          - fletcher_16
          - fletcher_32
          - hmac
          - md5
          - sha_1
          - sha_256
        waarde:
          type: string
          description: De berekende hash-waarde (checksum) van het bestand.
          example: d41d8cd98f00b204e9800998ecf8427e
        datum:
          type: string
          description: "De datum waarop de integriteitswaarde is bepaald (ISO 8601,\
            \ formaat YYYY-MM-DD)."
          format: date
      example:
        algoritme: md5
        waarde: d41d8cd98f00b204e9800998ecf8427e
        datum: 2024-01-15
    BestandsDeel:
      type: object
      title: BestandsDeel
      description: Een BESTANDSDEEL voor chunked upload van grote bestanden.
      required:
      - url
      - volgnummer
      - omvang
      - voltooid
      - lock
      properties:
        url:
          type: string
          description: De URL van dit BESTANDSDEEL.
          readOnly: true
          format: uri
        volgnummer:
          type: integer
          description: Het volgnummer van dit BESTANDSDEEL (begint bij 1).
          readOnly: true
        omvang:
          type: integer
          description: De grootte van dit BESTANDSDEEL in bytes.
          readOnly: true
        voltooid:
          type: boolean
          description: Geeft aan of dit BESTANDSDEEL reeds geüpload is.
          readOnly: true
        lock:
          type: string
          description: Het vergrendel-token (lock) dat vereist is om dit BESTANDSDEEL
            te uploaden.
          readOnly: true
        inhoud:
          type:
          - string
          - "null"
          description: "De inhoud van dit BESTANDSDEEL (alleen aanwezig bij voltooid=true,\
            \ base64-gecodeerd)."
          format: byte
      example:
        url: https://drc.example.com/api/v1/bestandsdelen/3fa85f64-5717-4562-b3fc-2c963f66afa6
        volgnummer: 1
        omvang: 4194304
        voltooid: false
        lock: c7d72de0-2ba1-4e73-8a4a-9b6de2f1d3e0
    JsonElement:
      type: object
      title: JsonElement
    EnkelvoudigInformatieObject:
      type: object
      title: EnkelvoudigInformatieObject
      description: Een enkelvoudig informatieobject (document met metadata) zoals
        opgeslagen in het DRC. Bevat alle metadata inclusief downloadlink naar de
        binaire bestandsinhoud.
      required:
      - id
      - bronorganisatie
      - creatiedatum
      - titel
      - versie
      - auteur
      - taal
      - beginRegistratie
      - informatieobjecttype
      - lock
      - locked
      properties:
        id:
          type: string
          description: De UUID van het INFORMATIEOBJECT.
          readOnly: true
          format: uuid
        url:
          type:
          - string
          - "null"
          description: De URL van dit INFORMATIEOBJECT.
          readOnly: true
          format: uri
        identificatie:
          type:
          - string
          - "null"
          description: Een binnen de organisatie unieke referentie naar het INFORMATIEOBJECT.
            Maximaal 40 tekens.
          maxLength: 40
        bronorganisatie:
          type: string
          description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie
            die het INFORMATIEOBJECT heeft gecreëerd of heeft ontvangen en als eerste
            in een samenwerkingsketen heeft vastgelegd.
          example: 123456782
          maxLength: 9
          minLength: 9
        creatiedatum:
          type: string
          description: "Een datum of een gebeurtenis in de levenscyclus van het INFORMATIEOBJECT\
            \ (ISO 8601, formaat YYYY-MM-DD)."
          example: 2024-01-15
          format: date
        titel:
          type: string
          description: De naam waaronder het INFORMATIEOBJECT formeel bekend is. Maximaal
            200 tekens.
          example: Besluit vergunning omgevingsrecht
          maxLength: 200
        versie:
          type: integer
          description: Het (automatische) versienummer van het INFORMATIEOBJECT. Begint
            bij 1. Elke PUT/PATCH creëert een nieuwe versie.
          readOnly: true
        vertrouwelijkheidaanduiding:
          type:
          - string
          - "null"
          description: "Aanduiding van de mate waarin het INFORMATIEOBJECT voor de\
            \ openbaarheid bestemd is. Mogelijke waarden: openbaar, beperkt_openbaar,\
            \ intern, zaakvertrouwelijk, vertrouwelijk, confidentieel, geheim, zeer_geheim."
          enum:
          - ""
          - openbaar
          - beperkt_openbaar
          - intern
          - zaakvertrouwelijk
          - vertrouwelijk
          - confidentieel
          - geheim
          - zeer_geheim
        auteur:
          type: string
          description: De persoon of organisatie die in de eerste plaats verantwoordelijk
            is voor het creëren van de inhoud van het INFORMATIEOBJECT. Maximaal 200
            tekens.
          example: Gemeente Utrecht
          maxLength: 200
        status:
          type:
          - string
          - "null"
          description: Aanduiding van de stand van zaken van een INFORMATIEOBJECT.
            De waarden 'in_bewerking' en 'ter_vaststelling' komen niet voor als het
            document ontvangen is. Wijziging van 'definitief' naar een eerdere status
            is niet mogelijk.
          enum:
          - concept
          - in_bewerking
          - definitief
          - ter_vaststelling
          - vastgesteld
          - gearchiveerd
        formaat:
          type:
          - string
          - "null"
          description: "Het \"Media Type\" (voorheen \"MIME type\") voor de wijze\
            \ waarop de inhoud van het INFORMATIEOBJECT is vastgelegd in een computerbestand.\
            \ Voorbeeld: `application/pdf`. Zie: https://www.iana.org/assignments/media-types/media-types.xhtml.\
            \ Maximaal 255 tekens."
          example: application/pdf
          maxLength: 255
        taal:
          type: string
          description: "Een ISO 639-2/B taalcode waarin de inhoud van het INFORMATIEOBJECT\
            \ is vastgelegd (3-letterige code). Voorbeeld: `nld` (Nederlands), `eng`\
            \ (Engels). Zie: https://www.iso.org/standard/4767.html"
          example: nld
          maxLength: 3
          minLength: 3
          pattern: "^[a-z]{3}$"
        bestandsnaam:
          type:
          - string
          - "null"
          description: "De naam van het fysieke bestand waarin de inhoud van het INFORMATIEOBJECT\
            \ is vastgelegd, inclusief extensie. Maximaal 255 tekens."
          example: besluit-2024-001.pdf
          maxLength: 255
        inhoud:
          type:
          - string
          - "null"
          description: Download URL van de binaire inhoud van het INFORMATIEOBJECT.
          format: uri
        bestandsomvang:
          type:
          - integer
          - "null"
          description: Aantal bytes dat de inhoud van het INFORMATIEOBJECT in beslag
            neemt.
          example: 12345
          format: int64
        link:
          type:
          - string
          - "null"
          description: De URL waarmee de inhoud van het INFORMATIEOBJECT op te vragen
            is. Maximaal 200 tekens.
          format: uri
          maxLength: 200
        beschrijving:
          type:
          - string
          - "null"
          description: Een generieke beschrijving van de inhoud van het INFORMATIEOBJECT.
            Maximaal 1000 tekens.
          example: Besluit omgevingsvergunning bouwen woning Dorpsstraat 1
          maxLength: 1000
        beginRegistratie:
          type: string
          description: Een datumtijd in ISO 8601 formaat waarop deze versie van het
            INFORMATIEOBJECT is aangemaakt of gewijzigd.
          readOnly: true
          format: date-time
        indicatieGebruiksrecht:
          type:
          - boolean
          - "null"
          description: "Indicatie of er beperkingen gelden aangaande het gebruik van\
            \ het INFORMATIEOBJECT anders dan raadpleging. Dit veld mag `null` zijn\
            \ om aan te geven dat de indicatie nog niet bekend is. Als de indicatie\
            \ gezet is op `true`, moet er ook een Gebruiksrecht aangemaakt zijn."
        verschijningsvorm:
          type:
          - string
          - "null"
          description: "De essentiële opmaakaspecten van een INFORMATIEOBJECT, vrij\
            \ tekstveld (bijv. HTML, formulier, Word-document)."
        ondertekening:
          oneOf:
          - $ref: "#/components/schemas/Ondertekening"
          - type: "null"
        integriteit:
          oneOf:
          - $ref: "#/components/schemas/Integriteit"
          - type: "null"
        informatieobjecttype:
          type: string
          description: URL-referentie naar het INFORMATIEOBJECTTYPE (in de Catalogi
            API). Maximaal 200 tekens.
          example: https://catalogi.example.com/api/v1/informatieobjecttypen/1c35fb6a-a07e-4643-b522-4a68b7deb21d
          format: uri
          maxLength: 200
        trefwoorden:
          type: array
          description: Een lijst van trefwoorden gescheiden door comma's.
          example:
          - omgevingsrecht
          - vergunning
          items:
            type: string
        inhoudIsVervallen:
          type:
          - boolean
          - "null"
          description: Geeft aan of de inhoud van het INFORMATIEOBJECT vervallen (dus
            niet langer geldig) is.
        bestandsdelen:
          type: array
          description: Lijst van BESTANDSDELen voor chunked upload. Gevuld wanneer
            het bestand via BESTANDSDELen wordt geüpload.
          readOnly: true
          items:
            $ref: "#/components/schemas/BestandsDeel"
        lock:
          type: string
          description: Het huidige vergrendel-token (lock). Leeg wanneer het INFORMATIEOBJECT
            niet vergrendeld is.
          readOnly: true
        locked:
          type: boolean
          description: "Geeft aan of het document gelocked is. Alleen als een document\
            \ gelocked is, mogen er aanpassingen gemaakt worden."
          readOnly: true
        _expand:
          type:
          - object
          - "null"
          description: "Geëxpandeerde gerelateerde resources, bijv. INFORMATIEOBJECTTYPE\
            \ of OBJECTINFORMATIEOBJECTen."
          additionalProperties:
            $ref: "#/components/schemas/JsonElement"
      example:
        url: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
        identificatie: DOC-2024-00001
        bronorganisatie: 123456782
        creatiedatum: 2024-01-15
        titel: Besluit vergunning omgevingsrecht
        versie: 1
        vertrouwelijkheidaanduiding: openbaar
        auteur: Gemeente Utrecht
        status: definitief
        formaat: application/pdf
        taal: nld
        bestandsnaam: besluit-2024-001.pdf
        inhoud: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000/download
        bestandsomvang: 12345
        beschrijving: Besluit omgevingsvergunning bouwen woning Dorpsstraat 1
        beginRegistratie: 2024-01-15T10:30:00
        indicatieGebruiksrecht: false
        informatieobjecttype: https://catalogi.example.com/api/v1/informatieobjecttypen/1c35fb6a-a07e-4643-b522-4a68b7deb21d
        trefwoorden:
        - omgevingsrecht
        - vergunning
        inhoudIsVervallen: false
        bestandsdelen: []
        lock: ""
        locked: false
    EnkelvoudigInformatieObjectRequest:
      type: object
      title: EnkelvoudigInformatieObjectRequest
      description: Request-model voor het aanmaken of bijwerken van een ENKELVOUDIGINFORMATIEOBJECT
        (document met metadata).
      required:
      - bronorganisatie
      - creatiedatum
      - titel
      - auteur
      - taal
      - informatieobjecttype
      properties:
        identificatie:
          type:
          - string
          - "null"
          description: Een binnen een gegeven context ondubbelzinnige referentie naar
            het INFORMATIEOBJECT. Maximaal 40 tekens.
          maxLength: 40
        bronorganisatie:
          type:
          - string
          - "null"
          description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie
            die het INFORMATIEOBJECT heeft gecreëerd of heeft ontvangen en als eerste
            in een samenwerkingsketen heeft vastgelegd. 9 cijfers.
          example: 123456782
          maxLength: 9
          minLength: 9
          pattern: "^[0-9]{9}$"
        creatiedatum:
          type:
          - string
          - "null"
          description: "Een datum of een gebeurtenis in de levenscyclus van het INFORMATIEOBJECT\
            \ (ISO 8601, formaat YYYY-MM-DD). Dit hoeft niet de aanmaakdatum van het\
            \ document te zijn."
          example: 2024-01-15
          format: date
        titel:
          type:
          - string
          - "null"
          description: De naam waaronder het INFORMATIEOBJECT formeel bekend is. Maximaal
            200 tekens.
          example: Besluit vergunning omgevingsrecht
          maxLength: 200
        vertrouwelijkheidaanduiding:
          type:
          - string
          - "null"
          description: "Aanduiding van de mate waarin het INFORMATIEOBJECT voor de\
            \ openbaarheid bestemd is. Mogelijke waarden: openbaar, beperkt_openbaar,\
            \ intern, zaakvertrouwelijk, vertrouwelijk, confidentieel, geheim, zeer_geheim."
          enum:
          - ""
          - openbaar
          - beperkt_openbaar
          - intern
          - zaakvertrouwelijk
          - vertrouwelijk
          - confidentieel
          - geheim
          - zeer_geheim
        auteur:
          type:
          - string
          - "null"
          description: De persoon of organisatie die in de eerste plaats verantwoordelijk
            is voor het creëren van de inhoud van het INFORMATIEOBJECT. Maximaal 200
            tekens.
          example: Gemeente Utrecht
          maxLength: 200
        status:
          type:
          - string
          - "null"
          description: "Aanduiding van de stand van zaken van een INFORMATIEOBJECT.\
            \ De waarden 'in_bewerking' en 'ter_vaststelling' komen niet voor als\
            \ het document ontvangen is (ontvangstdatum). Wijziging van 'definitief'\
            \ naar een eerdere status is niet mogelijk. Mogelijke waarden: concept,\
            \ in_bewerking, ter_vaststelling, definitief, vastgesteld, gearchiveerd."
          enum:
          - concept
          - in_bewerking
          - definitief
          - ter_vaststelling
          - vastgesteld
          - gearchiveerd
        formaat:
          type:
          - string
          - "null"
          description: "Het \"Media Type\" (voorheen \"MIME type\") voor de wijze\
            \ waarop de inhoud van het INFORMATIEOBJECT is vastgelegd in een computerbestand.\
            \ Voorbeeld: `application/pdf`. Zie: https://www.iana.org/assignments/media-types/media-types.xhtml.\
            \ Maximaal 255 tekens."
          example: application/pdf
          maxLength: 255
        taal:
          type:
          - string
          - "null"
          description: "Een ISO 639-2/B taalcode waarin de inhoud van het INFORMATIEOBJECT\
            \ is vastgelegd (3-letterige code). Voorbeeld: `nld` (Nederlands), `eng`\
            \ (Engels). Zie: https://www.iso.org/standard/4767.html"
          example: nld
          maxLength: 3
          minLength: 3
          pattern: "^[a-z]{3}$"
        bestandsnaam:
          type:
          - string
          - "null"
          description: "De naam van het fysieke bestand waarin de inhoud van het INFORMATIEOBJECT\
            \ is vastgelegd, inclusief extensie. Maximaal 255 tekens."
          example: besluit-2024-001.pdf
          maxLength: 255
        inhoud:
          type:
          - string
          - "null"
          description: Base64-gecodeerde bestandsinhoud. Gebruik dit veld alleen voor
            kleine bestanden (<4 GB); stuur anders via BESTANDSDELen.
          format: byte
        bestandsomvang:
          type:
          - integer
          - "null"
          description: Aantal bytes dat de inhoud van het INFORMATIEOBJECT in beslag
            neemt.
          example: 12345
          format: int64
        link:
          type:
          - string
          - "null"
          description: De URL waarmee de inhoud van het INFORMATIEOBJECT op te vragen
            is (alternatief voor inhoud-veld). Maximaal 200 tekens.
          format: uri
          maxLength: 200
        beschrijving:
          type:
          - string
          - "null"
          description: Een generieke beschrijving van de inhoud van het INFORMATIEOBJECT.
            Maximaal 1000 tekens.
          example: Besluit omgevingsvergunning bouwen woning Dorpsstraat 1
          maxLength: 1000
        indicatieGebruiksrecht:
          type:
          - boolean
          - "null"
          description: "Indicatie of er beperkingen gelden aangaande het gebruik van\
            \ het informatieobject anders dan raadpleging. Dit veld mag `null` zijn\
            \ om aan te geven dat de indicatie nog niet bekend is. Als de indicatie\
            \ gezet is op `true`, moet er ook een Gebruiksrecht aangemaakt zijn."
        verschijningsvorm:
          type:
          - string
          - "null"
          description: "De essentiële opmaakaspecten van een INFORMATIEOBJECT, vrij\
            \ tekstveld (bijv. HTML, formulier, Word-document)."
        ondertekening:
          oneOf:
          - $ref: "#/components/schemas/Ondertekening"
          - type: "null"
        integriteit:
          oneOf:
          - $ref: "#/components/schemas/Integriteit"
          - type: "null"
        informatieobjecttype:
          type:
          - string
          - "null"
          description: URL-referentie naar het INFORMATIEOBJECTTYPE (in de Catalogi
            API). Maximaal 200 tekens.
          example: https://catalogi.example.com/api/v1/informatieobjecttypen/1c35fb6a-a07e-4643-b522-4a68b7deb21d
          format: uri
          maxLength: 200
        trefwoorden:
          type:
          - array
          - "null"
          description: Een lijst van trefwoorden gescheiden door comma's. Elk trefwoord
            maximaal 100 tekens.
          example:
          - omgevingsrecht
          - vergunning
          items:
            type: string
        inhoudIsVervallen:
          type:
          - boolean
          - "null"
          description: Indicatie of de inhoud van het INFORMATIEOBJECT is vervallen
            en niet meer te downloaden is.
      example:
        bronorganisatie: 123456782
        creatiedatum: 2024-01-15
        titel: Besluit vergunning omgevingsrecht
        auteur: Gemeente Utrecht
        taal: nld
        informatieobjecttype: https://catalogi.example.com/api/v1/informatieobjecttypen/1c35fb6a-a07e-4643-b522-4a68b7deb21d
        status: definitief
        formaat: application/pdf
        bestandsnaam: besluit-2024-001.pdf
        bestandsomvang: 12345
        vertrouwelijkheidaanduiding: openbaar
        beschrijving: Besluit omgevingsvergunning bouwen woning Dorpsstraat 1
        trefwoorden:
        - omgevingsrecht
        - vergunning
    InformatieObjectZoekRequest:
      type: object
      title: InformatieObjectZoekRequest
      description: Request-body voor het zoeken van INFORMATIEOBJECTen op UUID.
      required:
      - uuid_In
      properties:
        uuid_In:
          type: array
          description: Lijst van UUID's van INFORMATIEOBJECTen om op te zoeken.
          items:
            type: string
        expand:
          type:
          - string
          - "null"
          description: Komma-gescheiden lijst van gerelateerde resources om te expanderen
            in het antwoord.
      example:
        uuid_In:
        - 550e8400-e29b-41d4-a716-446655440000
        - 6ba7b810-9dad-11d1-80b4-00c04fd430c8
    LockToken:
      type: object
      title: LockToken
      description: Het vergrendel-token dat ontvangen wordt na het vergrendelen (lock/checkout)
        van een informatieobject.
      required:
      - lock
      properties:
        lock:
          type: string
          description: Het vergrendel-token (UUID). Bewaar dit token — het is nodig
            voor PUT/PATCH en voor unlock.
          format: uuid
      example:
        lock: c7d72de0-2ba1-4e73-8a4a-9b6de2f1d3e0
    JsonElement?:
      type:
      - object
      - "null"
      title: JsonElement?
    Wijzigingen:
      type: object
      title: Wijzigingen
      description: "De gewijzigde velden met hun oude en nieuwe waarden, weergegeven\
        \ als twee objecten: 'oud' (situatie vóór de actie) en 'nieuw' (situatie ná\
        \ de actie)."
      properties:
        oud:
          $ref: "#/components/schemas/JsonElement?"
        nieuw:
          $ref: "#/components/schemas/JsonElement?"
    AuditTrailRegel:
      type: object
      title: AuditTrailRegel
      description: Een audittrail-regel die een wijziging op een INFORMATIEOBJECT
        vastlegt.
      required:
      - uuid
      - wijzigingen
      properties:
        uuid:
          type: string
          description: De UUID van deze audittrail-regel.
          readOnly: true
          format: uuid
        bron:
          type:
          - string
          - "null"
          description: "De naam van het systeem (component) dat de actie heeft uitgevoerd.\
            \ 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)."
        applicatieId:
          type:
          - string
          - "null"
          description: De ID van de applicatie die de actie heeft uitgevoerd.
        applicatieWeergave:
          type:
          - string
          - "null"
          description: Een leesbare weergave van de applicatie die de actie heeft
            uitgevoerd.
        gebruikersId:
          type:
          - string
          - "null"
          description: De ID van de gebruiker die de actie heeft uitgevoerd.
        gebruikersWeergave:
          type:
          - string
          - "null"
          description: Een leesbare weergave van de gebruiker die de actie heeft uitgevoerd.
        actie:
          type:
          - string
          - "null"
          description: "De uitgevoerde actie, bijv. create, update, destroy, retrieve,\
            \ list."
        actieWeergave:
          type:
          - string
          - "null"
          description: Een leesbare omschrijving van de uitgevoerde actie.
        resultaat:
          type:
          - integer
          - "null"
          description: "De HTTP-statuscode van het resultaat van de actie, bijv. 200,\
            \ 201, 204."
        hoofdObject:
          type:
          - string
          - "null"
          description: URL van het hoofd-object (het INFORMATIEOBJECT) waarop de actie
            betrekking heeft.
          format: uri
        resource:
          type:
          - string
          - "null"
          description: "De naam van de resource, bijv. enkelvoudiginformatieobject."
        resourceUrl:
          type:
          - string
          - "null"
          description: URL van de specifieke resource waarop de actie is uitgevoerd.
          format: uri
        resourceWeergave:
          type:
          - string
          - "null"
          description: Een leesbare weergave van de resource waarop de actie is uitgevoerd
            (bijv. de documenttitel).
        toelichting:
          type:
          - string
          - "null"
          description: Optionele toelichting bij de actie.
        wijzigingen:
          $ref: "#/components/schemas/Wijzigingen"
        aanmaakdatum:
          type:
          - string
          - "null"
          description: De datum-tijd waarop de audittrail-regel is aangemaakt (ISO
            8601 date-time).
          readOnly: true
          format: date-time
      example:
        uuid: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        bron: DRC
        applicatieId: gzac
        applicatieWeergave: GZAC
        gebruikersId: user@gemeente.nl
        gebruikersWeergave: Jan Jansen
        actie: create
        actieWeergave: Aangemaakt
        resultaat: 201
        hoofdObject: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
        resource: enkelvoudiginformatieobject
        resourceUrl: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
        resourceWeergave: Besluit vergunning omgevingsrecht
        toelichting: ""
        wijzigingen:
          oud: {}
          nieuw:
            titel: Besluit vergunning omgevingsrecht
        aanmaakdatum: 2024-01-15T10:30:00
    ObjectInformatieObject:
      type: object
      title: ObjectInformatieObject
      description: "Een relatie tussen een INFORMATIEOBJECT en een ander object (bijv.\
        \ zaak, besluit of custom objecttype). Koppelt een document aan een object\
        \ uit een andere API."
      required:
      - informatieobject
      - object
      - objectType
      properties:
        id:
          type:
          - string
          - "null"
          description: De UUID van deze OBJECTINFORMATIEOBJECT relatie.
          readOnly: true
          format: uuid
        url:
          type:
          - string
          - "null"
          description: De URL van deze OBJECTINFORMATIEOBJECT relatie.
          readOnly: true
          format: uri
        informatieobject:
          type: string
          description: URL-referentie naar het gekoppelde INFORMATIEOBJECT.
          example: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
          format: uri
        object:
          type: string
          description: URL-referentie naar het object waaraan het INFORMATIEOBJECT
            gekoppeld is.
          example: https://zaken.example.com/api/v1/zaken/6ba7b810-9dad-11d1-80b4-00c04fd430c8
          format: uri
        objectType:
          type: string
          description: "Het type van het gerelateerde OBJECT. Standaard objecttypen:\
            \ `zaak`, `besluit`. **EXPERIMENTEEL**: dit PoC breidt de standaard uit\
            \ met ondersteuning voor elk geldig objecttype in kleine letters met optionele\
            \ koppeltekens (bijv. `verzoek`, `mijn-object-type`)."
          example: zaak
          pattern: "^[a-z0-9]+(-[a-z0-9]+)*$"
      example:
        url: https://drc.example.com/api/v1/objectinformatieobjecten/3fa85f64-5717-4562-b3fc-2c963f66afa6
        informatieobject: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
        object: https://zaken.example.com/api/v1/zaken/6ba7b810-9dad-11d1-80b4-00c04fd430c8
        objectType: zaak
    ObjectInformatieObjectRequest:
      type: object
      title: ObjectInformatieObjectRequest
      description: "Request-model voor het aanmaken van een relatie tussen een INFORMATIEOBJECT\
        \ en een ander object (bijv. zaak, besluit of custom objecttype)."
      required:
      - informatieobject
      - object
      - objectType
      properties:
        informatieobject:
          type: string
          description: URL-referentie naar het te koppelen INFORMATIEOBJECT.
          example: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
          format: uri
          maxLength: 1000
        object:
          type: string
          description: "URL-referentie naar het object waaraan het INFORMATIEOBJECT\
            \ gekoppeld wordt (bijv. zaak, besluit, verzoek)."
          example: https://zaken.example.com/api/v1/zaken/6ba7b810-9dad-11d1-80b4-00c04fd430c8
          format: uri
          maxLength: 1000
        objectType:
          type: string
          description: "Het type van het gerelateerde OBJECT. Standaard objecttypen:\
            \ `zaak`, `besluit`. **EXPERIMENTEEL**: dit PoC breidt de standaard uit\
            \ met ondersteuning voor elk geldig objecttype in kleine letters met optionele\
            \ koppeltekens (bijv. `verzoek`, `mijn-object-type`)."
          example: zaak
          pattern: "^[a-z0-9]+(-[a-z0-9]+)*$"
      example:
        informatieobject: https://drc.example.com/api/v1/enkelvoudiginformatieobjecten/550e8400-e29b-41d4-a716-446655440000
        object: https://zaken.example.com/api/v1/zaken/6ba7b810-9dad-11d1-80b4-00c04fd430c8
        objectType: zaak
  securitySchemes:
    auth-jwt:
      flows:
        authorizationCode:
          authorizationUrl: https://auth.gzac.baseflow.com/realms/valtimo/protocol/openid-connect/auth
          tokenUrl: https://auth.gzac.baseflow.com/realms/valtimo/protocol/openid-connect/token
          refreshUrl: https://auth.gzac.baseflow.com/realms/valtimo/protocol/openid-connect/token
          scopes:
            openid: OpenID Connect scope
            profile: Profiel informatie
            email: E-mailadres
      description: "OIDC login via Keycloak (Authorization Code + PKCE). Klik 'Authorize',\
        \ log in met uw Keycloak-account en het token wordt automatisch gebruikt."
      type: oauth2
    auth-zgw:
      scheme: bearer
      bearerFormat: JWT
      description: ZGW-stijl HS256 JWT (GZAC/OpenZaak/Valtimo). Plak een token gegenereerd
        via de ZGW token-tool. Het token wordt geverifieerd met de HS256-handtekening
        indien een secret geconfigureerd is voor de client_id.
      type: http
security:
- auth-jwt:
  - openid
  - profile
  - email
- auth-zgw: []
tags:
- name: enkelvoudiginformatieobjecten
  description: "Beheer van document registraties, bestanden en hun metadata"
- name: objectinformatieobjecten
  description: Koppelen van documenten aan objecten
- name: subjectinformatieobjecten
  description: Uitbreiding voor niet-Zaken objecten
- name: bestandsdelen
  description: Chunked upload voor grote bestanden
- name: audittrail
  description: Audit log regels per INFORMATIEOBJECT
- name: admin
  description: Interne beheerfuncties voor opslagconfiguratie (niet onderdeel van
    de publieke API)
