> For the complete documentation index, see [llms.txt](https://dienstverleningsplatform.gitbook.io/platform-generieke-dienstverlening-public/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dienstverleningsplatform.gitbook.io/platform-generieke-dienstverlening-public/patronen/verzoeken/verzoek.md).

# Verzoek

#### Doel van de interactie

Een verzoek is informatie die mogelijk leidt tot het leveren van een product of dienst. Een verzoek kan afkomstig zijn van een klant, ketenpartner of ander systeem.

#### Het architectuuroverzicht

| Component                                | Functie                                                                                                                                  |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Optioneel: Authenticatiecomponent        | De eindgebruiker valideren                                                                                                               |
| Verzoekcomponent, zoals Open Formulieren | Het verzoek registreren                                                                                                                  |
| Objecten- en Objecttypen API             | Het valideren en opslaan van verzoeken                                                                                                   |
| Zaaktypecatalogus API                    | Voor het ophalen van documenttypen                                                                                                       |
| Documenten API                           | Het opslaan van bijlagen                                                                                                                 |
| Notificaties API                         | Voor het routeren van notificaties naar afnemers                                                                                         |
| Zaakafhandelcomponent                    | Het ontvangen van een notificatie, het ophalen en of kopiëren van formulierdata, het starten van een proces en het aanmaken van een zaak |

#### Het interactiepatroon

Dit patroon gebruikt een informatie-arme a-synchrone verbinding.

Het verzoekobject is persistent. Het wordt gerelateerd aan het bijbehorende proces, en vernietigd wanneer de archiefwet dat voorschrijft.Wordt&#x20;

#### Autorisatie

De registrator wordt vooraf met een API-sleutel geautoriseerd om objecten van dat objecttype aan te maken.

Omdat vooraf niet bekend is wie de afnemer is, wordt na creatie van het object informatie-arm genotificeerd. De notificatie bevat geen verzoekdata, maar slechts een verwijzing naar het object. In de Objecten-API wordt getoetst of de raadpleger geautoriseerd is voor objecten van dat objecttype.

### Gegevensstructuur

Het verzoekobject bestaat uit verschillende gegevensgroepen. Deze gegevens worden gevalideerd door een JSON-schema.

Een voorbeeldschema van een verzoek richting het zaaksysteem eSuite vind je hier: <https://github.com/joeridiederen/objecttypes/blob/patch-1/community-concepts/productaanvraag/productaanvraag-dimpact.json>

De verschillende gegevensgroepen zijn;

**Generieke verzoekgegevens**

De structuur van deze gegevens is altijd hetzelfde. Denk aan gegevensgroepen zoals de *Bron* van een verzoek, de *Locatie*, *Betrokkenen*, *Betaling*, of gegevens die een afhandelcomponent nodig heeft om een proces te starten. etc.

* Deze gegevens zijn idealiter standaard aanwezig, want ze garanderen dat verplichte velden aanwezig zijn. Als dat niet zo is, kan de eSuite wellicht geen zaak starten op basis van een formulier.

**Specifieke verzoekgegevens**

Dit zijn gegevens die nodig zijn voor het behandelen een specifiek Verzoek. Deze gegevens zijn afhankelijk van het gekozen product en vormen het contract tussen aanvraag- en behandeling. Afstemming tussen de *registrator* en *verwerker*is noodzakelijk als deze structuur van deze gegeven wijzigt. Deze gegevens verschillen per verzoektype, mogelijk per gemeente.

* Dit gedeelte bevat gegevens die noodzakelijk zijn voor geautomatiseerde verwerking.

**Overige gegevens**

Dit zijn verzoekgegevens die niet gestructureerd hoeven te worden, en als label:value pair in het Verzoekobject worden opgeslagen. Denk aan vraag-antwoordcombinaties om tot een Specifiek Verzoekgegeven te komen. Voorbeeld: inkomsten per categorie vragen (overig), om tot een totaalbedrag te komen (specifiek).

* Deze gegevens worden in het object geplaatst als *additionalproperties*

#### Volgordediagram

{% @mermaid/diagram content="sequenceDiagram
actor user as Gebruiker
participant OF as Formulieren
participant ProductAanvraag as ProductAanvraag (Object)
participant notificatie as Notificatie API
participant zac as Afhandelcomponent<br/>(GZAC of anders)
participant document as (OZ) Documenten API
participant zrc as ZAC

```
user ->> + OF : (DigID) Login
OF ->> document: Opslaan Formulier PDF + Bijlagen
OF->> + ProductAanvraag: Formulier ingestuurd
```

deactivate OF
ProductAanvraag->> + notificatie: Triggert
deactivate ProductAanvraag
notificatie ->> + zac: Notificatie
deactivate notificatie
zac ->> ProductAanvraag : Ophalen verzoek
zac ->> document: Eventueel ophalen documenten
zac ->> zrc : Maakt zaak aan<br/>(Incl. rol en link formulier PDF)
zac ->> ProductAanvraag : Verwijderen verzoek<br/>(t/m verzoekregister)
zac ->> user : Mail ontvangstbevestiging
zac ->> zac : Verdere verwerking<br/>(implementatie specifiek)
deactivate zac" %}

```mermaid
```
