| Beide kanten vorige revisie Vorige revisie | |
| stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:upload_zgw_document [2026/07/15 10:16] – ↷ Pagina verplaatst van stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:upload_zgw_document naar dev:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:upload_zgw_document Kars Gottschal | stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:upload_zgw_document [2026/07/15 11:07] (huidige) – aangemaakt - Externe bewerking 127.0.0.1 |
|---|
| | ===== Uploaden document conform OpenZaak API ===== |
| | {{tag>openwave:1.34:applicatiebeheer:functionaliteiten:zgw}} |
| | |
| | Op het endpoint //base-url//<nowiki>/api/zgw/documenten/api/v1/enkelvoudiginformatieobjecten/</nowiki> kan een POST worden geplaatst met een basse64 document dat in het vervolgbericht //Koppel Document Aan Zaak// aan een zaak wordt gekoppeld. |
| | De //base_url// is de implementatie van OpenWave waar tegenaan gepraat moet worden, bijvoorbeeld: //<nowiki>https://acc.rommeldam.open-wave.nl</nowiki>//.\\ |
| | |
| | Gebaseerd op versie Open Zaak API 1.2 |
| | |
| | <adm warning Whitelist> |
| | De zender die hier een uploaddocument-bericht POST zal gewhitelist moeten worden. Dit kan in de tabellen tbendpointlist en tbipauthorisationlist onder de tegel [[stable:applicatiebeheer:probleemoplossing:portalen_en_moduleschermen:beheerportaal_nieuw:tegels_kolom_gebruikers:endpoints_whitelist]] op het nieuwe beheerportaal onder de kolom //Gebruikers//. |
| | In de tabel tbendpointlist zal minimaal het endpoint ///api/zgw// gedefinieerd moeten zijn met daaronder (in de tabel tbipauthorisationlist) het IP-adres van de zender. |
| | </adm> |
| | |
| | ===== Authorisation Token ===== |
| | |
| | In de Authorization header van dit POST bericht moet een valide JWT-token worden meegegeven onder Bearer Token. |
| | Zie voorbeeld bij [[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_zaak]]. |
| | |
| | Voor het verkrijgen van een token (met beperkte geldigheidsduur!) zie: [[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit]].\\ |
| | |
| | De token wordt opgezocht in de tabel tbaccesstoken en het tijdstip van aanvraag wordt getoetst aan de geldigheidsduur van de gevonden rij. |
| | |
| | <adm warning (robot) Medewerker moet gelinkt zijn aan endpoint> |
| | De gevonden token is gelinkt aan een (robot)-medewerker (degene onder wiens credentials het token is gecreëerd). Bij de betreffende medewerkers kaart moet de kolom //Endpoint (robotmedewerker is gedefinieerd voor binnenkomende berichten op endpoint)// (dnkeyendpointlist) in blok login verwijzen naar een kaart in //tbendpointlist// waarvan de inhoud van de kolom //dvendpointurl// een substring is van dit endpoint //api/zgw/documenten/api/v1/enkelvoudiginformatieobjecten// waarop dit upload-document-bericht wordt gepost: bijvoorbeeld: ///api/zgw// |
| | </adm> |
| | |
| | ===== Headers ===== |
| | |
| | De enige verplichte header variabele is: Content-Type met als waarde //application/json// |
| | |
| | ===== Body ===== |
| | |
| | In application/JSON. |
| | <adm example> |
| | { |
| | "bronorganisatie": "001509962", |
| | "creatiedatum": "2024-04-10", |
| | "informatieobjecttype": "https://acc.rommeldam.open-wave.nl/api/zgw/catalogi/api/v1/informatieobjecttypen/bf6152d0-c6e6-4149-8880-838cf22e143b", |
| | "titel": "Wankele Toren", |
| | "auteur": "Jan Janssen", |
| | "taal": "ned", |
| | "bestandsnaam":"BigBen kunst.jpg", |
| | "inhoud": "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" |
| | } |
| | </adm> |
| | |
| | Zie Github: zie POST Maak een (ENKELVOUDIG) INFORMATIEOBJECT aan op https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/VNG-Realisatie/gemma-documentregistratiecomponent/1.5.0/src/openapi.yaml#tag/enkelvoudiginformatieobjecten/operation/enkelvoudiginformatieobject_create\\ |
| | |
| | De verwerking van het bericht door OpenWave wordt gelogd in tbmessagelog indien: |
| | * de instelling //Sectie: ZGW en Item: Messagelog// aangevinkt staat |
| | * EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staat |
| | |
| | In principe leidt de inhoud van de body tot het opslaan van het aangeleverde document op de uploadmap van OpenWave (zie de kolom //Tekst// van de instelling //Sectie: OWB en Item: TussenMapUploadFiles//). OpenWave weet nog niet bij welke zaak dit document hoort, die informatie komt pas in het vervolgbericht ([[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:koppel_zgw_documentaanzaak]]). Wel wordt alvast een unieke UUID uitgetrokken voor dit document die terug gecommuniceerd wordt aan de zender. De eerste posities van de documentnaam op de uploadmap beginnen met deze UUID-code. Deze metadata worden opgeslagen in de tabel tbupload onder de uitgetrokken UUID. Dit, mits aan de nodige voorwaarden in de OpenWave implementatie is voldaan: |
| | * Er moet tenminste één valide kaart zijn in de OpenWave documenttype tabel (tbdocumenttype) met een gevulde unieke UUID-code in de kolom //dvzgwuuid// die gelijk is aan de waarde (een UUID-code) vanaf de laatste slash van item //**informatieobjecttype**//. |
| | * De robotmedewerker die verbonden is aan de uitgereikte token moet gekoppeld zijn aan de rechtengroep die het functionele recht tbomgrechten.dlbomgins (insertrecht op de omgevingstabel) aangevinkt heeft staan. |
| | |
| | <adm warning UUID bij documenttype> |
| | In de documenttype-tabel tbdocumenttype (Beheerportaal, kolom Werkbeheer, tegel //Documenttypen//) moet door de functioneel beheerder bij één of meer documenttypes een unieke UUID-code worden gegenereerd (on line zijn er diverse programma's die dat kunnen) en geplaatst worden in de kolom //dvzgwuuid//. Deze code(s) - de informatieobjecttypes - moeten vervolgens buiten OpenWave om eenmalig gecommuniceerd worden met de zender zodat deze het item informatieobjecttype in de body correct kan vullen. Deze informatieobjecttype-uuid kan ook opgehaald worden met [[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:opvragenlijstmetzgwzaaktypen]] |
| | </adm> |
| | |
| | Het document wordt ontbased64 opgeslagen op uploadmap van OpenWave. Dit gebeurt onder de samengestelde naam van de op dat moment - door OpenWave - uitgetrokken UUID-code plus een underscore plus de inhoud van item //bestandsnaam// (indien het item bestandsnaam niet bestaat of leeg is, dan wordt de inhoud van item //titel// gebruikt).\\ |
| | |
| | <adm warning Beperkte bewaartijd document op uploadmap> |
| | De documenten op de uploadmap worden maar een beperkte tijd bewaard. Default 24 uur, maar hier kan van afgeweken zijn met de waarde van //Getal1// van de instelling //Sectie: OWB en Item: MaxUurUpload//. |
| | Het is dus belangrijk dat het vervolgbericht //Koppel document aan zaak// tijdig wordt verstuurd. |
| | </adm> |
| | |
| | |
| | ====== Responsebericht ===== |
| | |
| | Indien het document niet kon worden geplaatst wordt een responsecode anders dan 200/201 geretourneerd met in de body de oorzaak van het falen. |
| | Indien het document succesvol is geplaatst wordt onder de responsecode 201 het oorspronkelijke bericht geretourneerd aangevuld met de verplichte items, waarbij |
| | * in het item //identificatie// en in het laatste deel van het item //url// de UUID-code wordt geretourneerd die OpenWave heeft toegekend aan het document. |
| | * in de kolom inhoud niet het aangeboden document wordt geretourneerd, maar de tekst //Hier stond het document in base64//. |
| | |
| | <adm example Voorbeeld responsebody> |
| | { |
| | "bronorganisatie": "001509962", |
| | "beginRegistratie": "2024-08-13T09:28:24", |
| | "versie": 1, |
| | "taal": "ned", |
| | "identificatie":"79fdba5ed24543d48f7253e1e7623487", |
| | "url": "https://acc.rommeldam.open-wave.nl/api/zgw/documenten/api/v1/enkelvoudiginformatieobjecten/79fdba5ed24543d48f7253e1e7623487", |
| | "auteur": "Jan Janssen", |
| | "inhoud": "Hier stond het document in base64", |
| | "titel": "Wankele Toren", |
| | "informatieobjecttype": "https://acc.rommeldam.open-wave.nl/api/zgw/catalogi/api/v1/informatieobjecttypen/bf6152d0-c6e6-4149-8880-838cf22e143b", |
| | "bestandsnaam": "BigBen kunst.jpg", |
| | "bestandsdelen": [], |
| | "creatiedatum": "2024-04-10", |
| | "locked": true |
| | } |
| | </adm> |
| | |
| |