@vng-api/openproduct-producten 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +11 -0
  2. package/openapi.json +2504 -0
  3. package/openapi.yaml +1886 -0
  4. package/package.json +31 -0
package/openapi.json ADDED
@@ -0,0 +1,2504 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Producten API",
5
+ "version": "1.6.0",
6
+ "description": "\nEen API voor Producten.\n\nDe Producten API heeft 1 endpoint `producten`. Hiermee kunnen producten zelf, de bijbehorende eigenaren en documenten/zaken/taken worden aangemaakt.\n\n## Uitleg per resource\n\n### Product\nEen product is een instantie van een producttype (zie producttypen API), in een product worden onder andere de gegevens van de eigenaar, de benodigde data voor het product en bijvoorbeeld de status vastgelegd.\nSpecifieke product data kan worden opgeslagen in de JSON velden `dataobject` en `verbruiksobject`. Deze velden worden gevalideerd door de `verbruiksobject_schema` & `dataobject_schema` velden van het producttype ([zie jsonschema](https://json-schema.org)).\nDe status van een product kan alleen worden veranderd naar de een van de `toegestane statussen` gedefineerd op het producttype.\n\n### Eigenaar\nAan een product kunnen één of meerdere eigenaren worden gelinkt. Een eigenaar kan een Klant/Partij (Klantinteracties API), natuurlijk of niet natuurlijke persoon zijn.\n\n### Document, Zaak, Taak\nEen document is een verwijzing naar een `EnkelvoudigInformatieObject` uit de [documenten API](https://vng-realisatie.github.io/gemma-zaken/standaard/documenten/).\nEen zaak is een verwijzing naar een `Zaak` uit de [zaken API](https://vng-realisatie.github.io/gemma-zaken/standaard/zaken/).\nTaken is een verwijzingen naar taken uit externe API's.\nEen verwijzing kan als een URN en/of URL worden opgeslagen waarna via URN_MAPPING_CONFIG de missende urn/url automatisch wordt ingevuld.\n\n---\n*Zie de opmerkingen bij de endpoints voor verdere toelichting op specifieke velden.*\n\n### Notificaties\n\nDeze API publiceert notificaties op het kanaal `producten`.\n\n**Main resource**\n\n`product`\n\n\n\n**Kenmerken**\n\n* `producttype.uuid`: uuid van het producttype\n* `producttype.uniforme_product_naam`: Uniforme product naam gedefinieerd door de overheid.\n* `producttype.code`: code van het producttype.\n\n**Resources en acties**\n- `product`: create, update, destroy\n\n\n\n### Autorisatie\n\nVoor schrijfacties (POST, PUT, PATCH, DELETE) moet de user de juiste permissie hebben. Deze permissies zijn in te stellen in de Admin.\n- CREATE: ``producten.add_product``\n- UPDATE: ``producten.change_product``\n- DELETE: ``producten.delete_product``\n\nDe producten endpoints worden daarnaast geautoriseerd via producttypen. Een user moet read/write permissies hebben om producten van een producttype te kunnen lezen/aanmaken/updaten of verwijderen.\nDeze permissies zijn ook in te stellen in de Admin.\n\n\n",
7
+ "contact": {
8
+ "email": "support@maykinmedia.nl",
9
+ "name": "Maykin Media",
10
+ "url": "https://www.maykinmedia.nl"
11
+ },
12
+ "license": {
13
+ "name": "EUPL 1.2",
14
+ "url": "https://opensource.org/licenses/EUPL-1.2"
15
+ }
16
+ },
17
+ "paths": {
18
+ "/producten": {
19
+ "get": {
20
+ "operationId": "producten_list",
21
+ "description": "Deze lijst kan gefilterd wordt met query-string parameters.",
22
+ "summary": "Alle PRODUCTEN opvragen.",
23
+ "parameters": [
24
+ {
25
+ "in": "query",
26
+ "name": "aanmaak_datum",
27
+ "schema": {
28
+ "type": "string",
29
+ "format": "date-time"
30
+ },
31
+ "description": "De datum waarop het object is aangemaakt."
32
+ },
33
+ {
34
+ "in": "query",
35
+ "name": "aanmaak_datum__gte",
36
+ "schema": {
37
+ "type": "string",
38
+ "format": "date-time"
39
+ },
40
+ "description": "De datum waarop het object is aangemaakt."
41
+ },
42
+ {
43
+ "in": "query",
44
+ "name": "aanmaak_datum__lte",
45
+ "schema": {
46
+ "type": "string",
47
+ "format": "date-time"
48
+ },
49
+ "description": "De datum waarop het object is aangemaakt."
50
+ },
51
+ {
52
+ "in": "query",
53
+ "name": "aanvraag_zaak_url",
54
+ "schema": {
55
+ "type": "string"
56
+ },
57
+ "description": "De zaak waaruit dit product is ontstaan."
58
+ },
59
+ {
60
+ "in": "query",
61
+ "name": "aanvraag_zaak_url__contains",
62
+ "schema": {
63
+ "type": "string"
64
+ },
65
+ "description": "De zaak waaruit dit product is ontstaan."
66
+ },
67
+ {
68
+ "in": "query",
69
+ "name": "aanvraag_zaak_urn",
70
+ "schema": {
71
+ "type": "string"
72
+ },
73
+ "description": "De zaak waaruit dit product is ontstaan. (<organisatie>:<systeem>:<component>:<resource>:<identificatie>)"
74
+ },
75
+ {
76
+ "in": "query",
77
+ "name": "aanvraag_zaak_urn__contains",
78
+ "schema": {
79
+ "type": "string"
80
+ },
81
+ "description": "De zaak waaruit dit product is ontstaan. (<organisatie>:<systeem>:<component>:<resource>:<identificatie>)"
82
+ },
83
+ {
84
+ "in": "query",
85
+ "name": "dataobject_attr",
86
+ "schema": {
87
+ "type": "string"
88
+ },
89
+ "description": "\nEen json filter parameter heeft de format `key__operator__waarde`.\n`key` is de naam van de attribuut, `operator` is de operator die gebruikt moet worden en `waarde` is de waarde waarop zal worden gezocht.\n\nWaardes kunnen een string, nummer of datum (ISO format; YYYY-MM-DD) zijn.\n\nDe ondersteunde operators zijn:\n* `exact` - gelijk aan\n* `gt` - groter dan\n* `gte` - groter dan of gelijk aan\n* `lt` - kleiner dan\n* `lte` - kleiner dan of gelijk aan\n* `icontains` - hoofdletterongevoelige gedeeltelijke match\n* `in` - in een lijst van waarden gescheiden door `|`\n\n`key` mag ook geen komma's bevatten.\n\nVoorbeeld: om producten met `kenteken`: `AA-111-B` in het dataobject vinden: `dataobject_attr=kenteken__exact__AA-111-B`.\nAls `kenteken` genest zit in `auto`: `dataobject_attr=auto__kenteken__exact__AA-111-B`\n\n\n\nMeerdere filters kunnen worden toegevoegd door `dataobject_attr` meerdere keren aan het request toe te voegen.\nBijvoorbeeld: `dataobject_attr=kenteken__exact__AA-111-B&objectdata_attr=zone__exact__B`\n"
90
+ },
91
+ {
92
+ "in": "query",
93
+ "name": "documenten__url",
94
+ "schema": {
95
+ "type": "string"
96
+ }
97
+ },
98
+ {
99
+ "in": "query",
100
+ "name": "documenten__url__contains",
101
+ "schema": {
102
+ "type": "string"
103
+ }
104
+ },
105
+ {
106
+ "in": "query",
107
+ "name": "documenten__urn",
108
+ "schema": {
109
+ "type": "string"
110
+ }
111
+ },
112
+ {
113
+ "in": "query",
114
+ "name": "documenten__urn__contains",
115
+ "schema": {
116
+ "type": "string"
117
+ }
118
+ },
119
+ {
120
+ "in": "query",
121
+ "name": "eigenaren__bsn",
122
+ "schema": {
123
+ "type": "string"
124
+ },
125
+ "description": "Het BSN van de product eigenaar, BSN van 8 karakters moet met een extra 0 beginnen."
126
+ },
127
+ {
128
+ "in": "query",
129
+ "name": "eigenaren__klantnummer",
130
+ "schema": {
131
+ "type": "string"
132
+ },
133
+ "description": "generiek veld voor de identificatie van een klant of partij."
134
+ },
135
+ {
136
+ "in": "query",
137
+ "name": "eigenaren__kvk_nummer",
138
+ "schema": {
139
+ "type": "string"
140
+ },
141
+ "description": "Het kvk nummer van de product eigenaar"
142
+ },
143
+ {
144
+ "in": "query",
145
+ "name": "eigenaren__uuid",
146
+ "schema": {
147
+ "type": "string",
148
+ "format": "uuid"
149
+ }
150
+ },
151
+ {
152
+ "in": "query",
153
+ "name": "eigenaren__vestigingsnummer",
154
+ "schema": {
155
+ "type": "string"
156
+ },
157
+ "description": "Een korte unieke aanduiding van een vestiging."
158
+ },
159
+ {
160
+ "in": "query",
161
+ "name": "eind_datum",
162
+ "schema": {
163
+ "type": "string",
164
+ "format": "date"
165
+ },
166
+ "description": "De einddatum van dit product. Op deze datum zal de status van het product automatisch naar VERLOPEN worden gezet. Op het moment dat de eind_datum wordt ingevuld moet de status VERLOPEN op het producttype zijn toegestaan."
167
+ },
168
+ {
169
+ "in": "query",
170
+ "name": "eind_datum__gte",
171
+ "schema": {
172
+ "type": "string",
173
+ "format": "date"
174
+ },
175
+ "description": "De einddatum van dit product. Op deze datum zal de status van het product automatisch naar VERLOPEN worden gezet. Op het moment dat de eind_datum wordt ingevuld moet de status VERLOPEN op het producttype zijn toegestaan."
176
+ },
177
+ {
178
+ "in": "query",
179
+ "name": "eind_datum__lte",
180
+ "schema": {
181
+ "type": "string",
182
+ "format": "date"
183
+ },
184
+ "description": "De einddatum van dit product. Op deze datum zal de status van het product automatisch naar VERLOPEN worden gezet. Op het moment dat de eind_datum wordt ingevuld moet de status VERLOPEN op het producttype zijn toegestaan."
185
+ },
186
+ {
187
+ "in": "query",
188
+ "name": "frequentie",
189
+ "schema": {
190
+ "type": "string",
191
+ "title": "Prijs frequentie",
192
+ "enum": [
193
+ "eenmalig",
194
+ "jaarlijks",
195
+ "maandelijks"
196
+ ]
197
+ },
198
+ "description": "De frequentie van betalingen.\n\n* `eenmalig` - Eenmalig\n* `maandelijks` - Maandelijks\n* `jaarlijks` - Jaarlijks"
199
+ },
200
+ {
201
+ "in": "query",
202
+ "name": "gepubliceerd",
203
+ "schema": {
204
+ "type": "boolean"
205
+ },
206
+ "description": "Geeft aan of het product getoond kan worden."
207
+ },
208
+ {
209
+ "in": "query",
210
+ "name": "naam",
211
+ "schema": {
212
+ "type": "string"
213
+ },
214
+ "description": "De naam van dit product."
215
+ },
216
+ {
217
+ "name": "page",
218
+ "required": false,
219
+ "in": "query",
220
+ "description": "Een pagina binnen de gepagineerde set resultaten.",
221
+ "schema": {
222
+ "type": "integer"
223
+ }
224
+ },
225
+ {
226
+ "name": "page_size",
227
+ "required": false,
228
+ "in": "query",
229
+ "description": "Het aantal resultaten terug te geven per pagina. (default: 100, maximum: 500).",
230
+ "schema": {
231
+ "type": "integer"
232
+ }
233
+ },
234
+ {
235
+ "in": "query",
236
+ "name": "prijs",
237
+ "schema": {
238
+ "type": "number"
239
+ },
240
+ "description": "De prijs van het product."
241
+ },
242
+ {
243
+ "in": "query",
244
+ "name": "prijs__gte",
245
+ "schema": {
246
+ "type": "number"
247
+ },
248
+ "description": "De prijs van het product."
249
+ },
250
+ {
251
+ "in": "query",
252
+ "name": "prijs__lte",
253
+ "schema": {
254
+ "type": "number"
255
+ },
256
+ "description": "De prijs van het product."
257
+ },
258
+ {
259
+ "in": "query",
260
+ "name": "producttype__code",
261
+ "schema": {
262
+ "type": "string"
263
+ },
264
+ "description": "code van het producttype."
265
+ },
266
+ {
267
+ "in": "query",
268
+ "name": "producttype__code__in",
269
+ "schema": {
270
+ "type": "array",
271
+ "items": {
272
+ "type": "string"
273
+ }
274
+ },
275
+ "description": "Meerdere waarden kunnen gescheiden worden door komma's.",
276
+ "explode": false,
277
+ "style": "form"
278
+ },
279
+ {
280
+ "in": "query",
281
+ "name": "producttype__gepubliceerd",
282
+ "schema": {
283
+ "type": "boolean"
284
+ }
285
+ },
286
+ {
287
+ "in": "query",
288
+ "name": "producttype__locaties__uuid",
289
+ "schema": {
290
+ "type": "string",
291
+ "format": "uuid"
292
+ }
293
+ },
294
+ {
295
+ "in": "query",
296
+ "name": "producttype__naam",
297
+ "schema": {
298
+ "type": "string"
299
+ },
300
+ "description": "De Nederlandse naam van het producttype"
301
+ },
302
+ {
303
+ "in": "query",
304
+ "name": "producttype__naam__icontains",
305
+ "schema": {
306
+ "type": "string"
307
+ },
308
+ "description": "De Nederlandse naam van het producttype"
309
+ },
310
+ {
311
+ "in": "query",
312
+ "name": "producttype__naam__in",
313
+ "schema": {
314
+ "type": "array",
315
+ "items": {
316
+ "type": "string"
317
+ }
318
+ },
319
+ "description": "De Nederlandse naam van het producttype",
320
+ "explode": false,
321
+ "style": "form"
322
+ },
323
+ {
324
+ "in": "query",
325
+ "name": "producttype__organisaties__code",
326
+ "schema": {
327
+ "type": "string"
328
+ },
329
+ "description": "code van de organisatie."
330
+ },
331
+ {
332
+ "in": "query",
333
+ "name": "producttype__organisaties__uuid",
334
+ "schema": {
335
+ "type": "string",
336
+ "format": "uuid"
337
+ }
338
+ },
339
+ {
340
+ "in": "query",
341
+ "name": "producttype__themas__naam",
342
+ "schema": {
343
+ "type": "string"
344
+ },
345
+ "description": "Naam van het thema."
346
+ },
347
+ {
348
+ "in": "query",
349
+ "name": "producttype__themas__naam__in",
350
+ "schema": {
351
+ "type": "array",
352
+ "items": {
353
+ "type": "string"
354
+ }
355
+ },
356
+ "description": "Lijst van thema namen waarop kan worden gezocht.",
357
+ "explode": false,
358
+ "style": "form"
359
+ },
360
+ {
361
+ "in": "query",
362
+ "name": "producttype__themas__uuid",
363
+ "schema": {
364
+ "type": "string",
365
+ "format": "uuid"
366
+ }
367
+ },
368
+ {
369
+ "in": "query",
370
+ "name": "producttype__themas__uuid__in",
371
+ "schema": {
372
+ "type": "array",
373
+ "items": {
374
+ "type": "string",
375
+ "format": "uuid"
376
+ }
377
+ },
378
+ "description": "Lijst van thema uuids waarop kan worden gezocht.",
379
+ "explode": false,
380
+ "style": "form"
381
+ },
382
+ {
383
+ "in": "query",
384
+ "name": "producttype__uuid",
385
+ "schema": {
386
+ "type": "string",
387
+ "format": "uuid"
388
+ }
389
+ },
390
+ {
391
+ "in": "query",
392
+ "name": "producttype__uuid__in",
393
+ "schema": {
394
+ "type": "array",
395
+ "items": {
396
+ "type": "string",
397
+ "format": "uuid"
398
+ }
399
+ },
400
+ "description": "Meerdere waarden kunnen gescheiden worden door komma's.",
401
+ "explode": false,
402
+ "style": "form"
403
+ },
404
+ {
405
+ "in": "query",
406
+ "name": "start_datum",
407
+ "schema": {
408
+ "type": "string",
409
+ "format": "date"
410
+ },
411
+ "description": "De start datum van dit product. Op deze datum zal de status van het product automatisch naar ACTIEF worden gezet. Op het moment dat de start_datum wordt ingevuld moet de status ACTIEF op het producttype zijn toegestaan."
412
+ },
413
+ {
414
+ "in": "query",
415
+ "name": "start_datum__gte",
416
+ "schema": {
417
+ "type": "string",
418
+ "format": "date"
419
+ },
420
+ "description": "De start datum van dit product. Op deze datum zal de status van het product automatisch naar ACTIEF worden gezet. Op het moment dat de start_datum wordt ingevuld moet de status ACTIEF op het producttype zijn toegestaan."
421
+ },
422
+ {
423
+ "in": "query",
424
+ "name": "start_datum__lte",
425
+ "schema": {
426
+ "type": "string",
427
+ "format": "date"
428
+ },
429
+ "description": "De start datum van dit product. Op deze datum zal de status van het product automatisch naar ACTIEF worden gezet. Op het moment dat de start_datum wordt ingevuld moet de status ACTIEF op het producttype zijn toegestaan."
430
+ },
431
+ {
432
+ "in": "query",
433
+ "name": "status",
434
+ "schema": {
435
+ "type": "string",
436
+ "enum": [
437
+ "actief",
438
+ "gereed",
439
+ "geweigerd",
440
+ "in_aanvraag",
441
+ "ingetrokken",
442
+ "initieel",
443
+ "verlopen"
444
+ ]
445
+ },
446
+ "description": "De status opties worden bepaald door het veld 'toegestane statussen' van het gerelateerde producttype. Via start & eind_datum kan de status automatisch naar ACTIEF of VERLOPEN worden gezet (mits deze statussen zijn toegestaan op het producttype).\n\n* `initieel` - Initieel\n* `in_aanvraag` - In aanvraag\n* `gereed` - Gereed\n* `actief` - Actief\n* `ingetrokken` - Ingetrokken\n* `geweigerd` - Geweigerd\n* `verlopen` - Verlopen"
447
+ },
448
+ {
449
+ "in": "query",
450
+ "name": "taken__url",
451
+ "schema": {
452
+ "type": "string"
453
+ }
454
+ },
455
+ {
456
+ "in": "query",
457
+ "name": "taken__url__contains",
458
+ "schema": {
459
+ "type": "string"
460
+ }
461
+ },
462
+ {
463
+ "in": "query",
464
+ "name": "taken__urn",
465
+ "schema": {
466
+ "type": "string"
467
+ }
468
+ },
469
+ {
470
+ "in": "query",
471
+ "name": "taken__urn__contains",
472
+ "schema": {
473
+ "type": "string"
474
+ }
475
+ },
476
+ {
477
+ "in": "query",
478
+ "name": "uniforme_product_naam",
479
+ "schema": {
480
+ "type": "string"
481
+ },
482
+ "description": "Uniforme product naam"
483
+ },
484
+ {
485
+ "in": "query",
486
+ "name": "update_datum",
487
+ "schema": {
488
+ "type": "string",
489
+ "format": "date-time"
490
+ },
491
+ "description": "De datum waarop het object voor het laatst is gewijzigd."
492
+ },
493
+ {
494
+ "in": "query",
495
+ "name": "update_datum__gte",
496
+ "schema": {
497
+ "type": "string",
498
+ "format": "date-time"
499
+ },
500
+ "description": "De datum waarop het object voor het laatst is gewijzigd."
501
+ },
502
+ {
503
+ "in": "query",
504
+ "name": "update_datum__lte",
505
+ "schema": {
506
+ "type": "string",
507
+ "format": "date-time"
508
+ },
509
+ "description": "De datum waarop het object voor het laatst is gewijzigd."
510
+ },
511
+ {
512
+ "in": "query",
513
+ "name": "verbruiksobject_attr",
514
+ "schema": {
515
+ "type": "string"
516
+ },
517
+ "description": "\nEen json filter parameter heeft de format `key__operator__waarde`.\n`key` is de naam van de attribuut, `operator` is de operator die gebruikt moet worden en `waarde` is de waarde waarop zal worden gezocht.\n\nWaardes kunnen een string, nummer of datum (ISO format; YYYY-MM-DD) zijn.\n\nDe ondersteunde operators zijn:\n* `exact` - gelijk aan\n* `gt` - groter dan\n* `gte` - groter dan of gelijk aan\n* `lt` - kleiner dan\n* `lte` - kleiner dan of gelijk aan\n* `icontains` - hoofdletterongevoelige gedeeltelijke match\n* `in` - in een lijst van waarden gescheiden door `|`\n\n`key` mag ook geen komma's bevatten.\n\nVoorbeeld: om producten met `kenteken`: `AA-111-B` in het dataobject vinden: `dataobject_attr=kenteken__exact__AA-111-B`.\nAls `kenteken` genest zit in `auto`: `dataobject_attr=auto__kenteken__exact__AA-111-B`\n\n\n\nMeerdere filters kunnen worden toegevoegd door `dataobject_attr` meerdere keren aan het request toe te voegen.\nBijvoorbeeld: `dataobject_attr=kenteken__exact__AA-111-B&objectdata_attr=zone__exact__B`\n"
518
+ },
519
+ {
520
+ "in": "query",
521
+ "name": "zaken__url",
522
+ "schema": {
523
+ "type": "string"
524
+ }
525
+ },
526
+ {
527
+ "in": "query",
528
+ "name": "zaken__url__contains",
529
+ "schema": {
530
+ "type": "string"
531
+ }
532
+ },
533
+ {
534
+ "in": "query",
535
+ "name": "zaken__urn",
536
+ "schema": {
537
+ "type": "string"
538
+ }
539
+ },
540
+ {
541
+ "in": "query",
542
+ "name": "zaken__urn__contains",
543
+ "schema": {
544
+ "type": "string"
545
+ }
546
+ }
547
+ ],
548
+ "tags": [
549
+ "producten"
550
+ ],
551
+ "security": [
552
+ {
553
+ "OpenID": []
554
+ },
555
+ {
556
+ "tokenAuth": []
557
+ }
558
+ ],
559
+ "responses": {
560
+ "200": {
561
+ "headers": {
562
+ "API-version": {
563
+ "schema": {
564
+ "type": "string"
565
+ },
566
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
567
+ }
568
+ },
569
+ "content": {
570
+ "application/json": {
571
+ "schema": {
572
+ "$ref": "#/components/schemas/PaginatedProductList"
573
+ },
574
+ "examples": {
575
+ "ProductResponse": {
576
+ "value": {
577
+ "count": 123,
578
+ "next": "http://api.example.org/accounts/?page=4",
579
+ "previous": "http://api.example.org/accounts/?page=2",
580
+ "results": [
581
+ {
582
+ "uuid": "da0df49a-cd71-4e24-9bae-5be8b01f2c36",
583
+ "url": "https://gemeente.open-product.nl/producten/api/v0/producten/da0df49a-cd71-4e24-9bae-5be8b01f2c36",
584
+ "naam": "verhuurvergunning: straatweg 14",
585
+ "start_datum": "2024-12-01",
586
+ "eind_datum": "2026-12-01",
587
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
588
+ "update_datum": "2019-08-24T14:15:22Z",
589
+ "producttype": {
590
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
591
+ "code": "129380-A21231",
592
+ "keywords": [
593
+ "auto"
594
+ ],
595
+ "uniforme_product_naam": "parkeervergunning",
596
+ "toegestane_statussen": [
597
+ "gereed"
598
+ ],
599
+ "gepubliceerd": true,
600
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
601
+ "update_datum": "2019-08-24T14:15:22Z",
602
+ "themas": [
603
+ {
604
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
605
+ "naam": "Parkeren",
606
+ "beschrijving": ".....",
607
+ "gepubliceerd": true,
608
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
609
+ "update_datum": "2019-08-24T14:15:22Z",
610
+ "hoofd_thema": "41ec14a8-ca7d-43a9-a4a8-46f9587c8d91",
611
+ "publicatie_start_datum": "2019-09-24",
612
+ "publicatie_eind_datum": "2030-09-24"
613
+ }
614
+ ]
615
+ },
616
+ "gepubliceerd": true,
617
+ "eigenaren": [
618
+ {
619
+ "uuid": "9de01697-7fc5-4113-803c-a8c9a8dad4f2",
620
+ "bsn": "111222333"
621
+ }
622
+ ],
623
+ "documenten": [
624
+ {
625
+ "urn": "urn:nld:maykin:openzaak:drc:document:uuid:99a8bd4f-4144-4105-9850-e477628852fc",
626
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
627
+ }
628
+ ],
629
+ "zaken": [
630
+ {
631
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf",
632
+ "url": "https://gemeente-a.zgw.nl/zaken/eb188bea-51f2-44f0-8acc-eec1c710b4bf"
633
+ }
634
+ ],
635
+ "taken": [
636
+ {
637
+ "urn": "urn:nld:maykin:openzaak:ttc:taak:uuid:cec996f4-2efa-4307-a035-32c2c9032e89",
638
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
639
+ }
640
+ ],
641
+ "status": "gereed",
642
+ "prijs": "20.20",
643
+ "frequentie": "eenmalig",
644
+ "verbruiksobject": {
645
+ "uren": 130
646
+ },
647
+ "dataobject": {
648
+ "max_uren": 150
649
+ },
650
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1",
651
+ "aanvraag_zaak_url": "https://maykin.ztc.com/zaken/d42613cd-ee22-4455-808c-c19c7b8442a2"
652
+ }
653
+ ]
654
+ },
655
+ "summary": "product response"
656
+ }
657
+ }
658
+ }
659
+ },
660
+ "description": ""
661
+ },
662
+ "400": {
663
+ "headers": {
664
+ "API-version": {
665
+ "schema": {
666
+ "type": "string"
667
+ },
668
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
669
+ }
670
+ },
671
+ "content": {
672
+ "application/json": {
673
+ "schema": {
674
+ "$ref": "#/components/schemas/Error"
675
+ },
676
+ "examples": {
677
+ "BadRequestExample": {
678
+ "value": {
679
+ "veld_a": [
680
+ "Dit veld is vereist."
681
+ ],
682
+ "veld_b": [
683
+ "‘<uuid>’ is geen geldige UUID."
684
+ ]
685
+ },
686
+ "summary": "Bad request example",
687
+ "description": "Errors worden per veld teruggegeven. Hieronder volgt een voorbeeld."
688
+ }
689
+ }
690
+ }
691
+ },
692
+ "description": "Validation error"
693
+ },
694
+ "403": {
695
+ "headers": {
696
+ "API-version": {
697
+ "schema": {
698
+ "type": "string"
699
+ },
700
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
701
+ }
702
+ },
703
+ "content": {
704
+ "application/json": {
705
+ "schema": {
706
+ "$ref": "#/components/schemas/DetailError"
707
+ }
708
+ }
709
+ },
710
+ "description": ""
711
+ }
712
+ }
713
+ },
714
+ "post": {
715
+ "operationId": "producten_create",
716
+ "summary": "Maak een PRODUCT aan.",
717
+ "tags": [
718
+ "producten"
719
+ ],
720
+ "requestBody": {
721
+ "content": {
722
+ "application/json": {
723
+ "schema": {
724
+ "$ref": "#/components/schemas/ProductRequest"
725
+ },
726
+ "examples": {
727
+ "ProductRequest": {
728
+ "value": {
729
+ "naam": "verhuurvergunning: straatweg 14",
730
+ "start_datum": "2024-12-01",
731
+ "eind_datum": "2026-12-01",
732
+ "producttype_uuid": "95792000-d57f-4d3a-b14c-c4c7aa964907",
733
+ "gepubliceerd": false,
734
+ "eigenaren": [
735
+ {
736
+ "bsn": "111222333"
737
+ }
738
+ ],
739
+ "status": "gereed",
740
+ "prijs": "20.20",
741
+ "frequentie": "eenmalig",
742
+ "verbruiksobject": {
743
+ "uren": 130
744
+ },
745
+ "dataobject": {
746
+ "max_uren": 150
747
+ },
748
+ "documenten": [
749
+ {
750
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
751
+ }
752
+ ],
753
+ "zaken": [
754
+ {
755
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf"
756
+ }
757
+ ],
758
+ "taken": [
759
+ {
760
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
761
+ }
762
+ ],
763
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1"
764
+ },
765
+ "summary": "product request"
766
+ }
767
+ }
768
+ }
769
+ },
770
+ "required": true
771
+ },
772
+ "security": [
773
+ {
774
+ "OpenID": []
775
+ },
776
+ {
777
+ "tokenAuth": []
778
+ }
779
+ ],
780
+ "responses": {
781
+ "201": {
782
+ "headers": {
783
+ "API-version": {
784
+ "schema": {
785
+ "type": "string"
786
+ },
787
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
788
+ }
789
+ },
790
+ "content": {
791
+ "application/json": {
792
+ "schema": {
793
+ "$ref": "#/components/schemas/Product"
794
+ },
795
+ "examples": {
796
+ "ProductResponse": {
797
+ "value": {
798
+ "uuid": "da0df49a-cd71-4e24-9bae-5be8b01f2c36",
799
+ "url": "https://gemeente.open-product.nl/producten/api/v0/producten/da0df49a-cd71-4e24-9bae-5be8b01f2c36",
800
+ "naam": "verhuurvergunning: straatweg 14",
801
+ "start_datum": "2024-12-01",
802
+ "eind_datum": "2026-12-01",
803
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
804
+ "update_datum": "2019-08-24T14:15:22Z",
805
+ "producttype": {
806
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
807
+ "code": "129380-A21231",
808
+ "keywords": [
809
+ "auto"
810
+ ],
811
+ "uniforme_product_naam": "parkeervergunning",
812
+ "toegestane_statussen": [
813
+ "gereed"
814
+ ],
815
+ "gepubliceerd": true,
816
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
817
+ "update_datum": "2019-08-24T14:15:22Z",
818
+ "themas": [
819
+ {
820
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
821
+ "naam": "Parkeren",
822
+ "beschrijving": ".....",
823
+ "gepubliceerd": true,
824
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
825
+ "update_datum": "2019-08-24T14:15:22Z",
826
+ "hoofd_thema": "41ec14a8-ca7d-43a9-a4a8-46f9587c8d91",
827
+ "publicatie_start_datum": "2019-09-24",
828
+ "publicatie_eind_datum": "2030-09-24"
829
+ }
830
+ ]
831
+ },
832
+ "gepubliceerd": true,
833
+ "eigenaren": [
834
+ {
835
+ "uuid": "9de01697-7fc5-4113-803c-a8c9a8dad4f2",
836
+ "bsn": "111222333"
837
+ }
838
+ ],
839
+ "documenten": [
840
+ {
841
+ "urn": "urn:nld:maykin:openzaak:drc:document:uuid:99a8bd4f-4144-4105-9850-e477628852fc",
842
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
843
+ }
844
+ ],
845
+ "zaken": [
846
+ {
847
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf",
848
+ "url": "https://gemeente-a.zgw.nl/zaken/eb188bea-51f2-44f0-8acc-eec1c710b4bf"
849
+ }
850
+ ],
851
+ "taken": [
852
+ {
853
+ "urn": "urn:nld:maykin:openzaak:ttc:taak:uuid:cec996f4-2efa-4307-a035-32c2c9032e89",
854
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
855
+ }
856
+ ],
857
+ "status": "gereed",
858
+ "prijs": "20.20",
859
+ "frequentie": "eenmalig",
860
+ "verbruiksobject": {
861
+ "uren": 130
862
+ },
863
+ "dataobject": {
864
+ "max_uren": 150
865
+ },
866
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1",
867
+ "aanvraag_zaak_url": "https://maykin.ztc.com/zaken/d42613cd-ee22-4455-808c-c19c7b8442a2"
868
+ },
869
+ "summary": "product response"
870
+ }
871
+ }
872
+ }
873
+ },
874
+ "description": ""
875
+ },
876
+ "400": {
877
+ "headers": {
878
+ "API-version": {
879
+ "schema": {
880
+ "type": "string"
881
+ },
882
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
883
+ }
884
+ },
885
+ "content": {
886
+ "application/json": {
887
+ "schema": {
888
+ "$ref": "#/components/schemas/Error"
889
+ },
890
+ "examples": {
891
+ "BadRequestExample": {
892
+ "value": {
893
+ "veld_a": [
894
+ "Dit veld is vereist."
895
+ ],
896
+ "veld_b": [
897
+ "‘<uuid>’ is geen geldige UUID."
898
+ ]
899
+ },
900
+ "summary": "Bad request example",
901
+ "description": "Errors worden per veld teruggegeven. Hieronder volgt een voorbeeld."
902
+ }
903
+ }
904
+ }
905
+ },
906
+ "description": "Validation error"
907
+ },
908
+ "403": {
909
+ "headers": {
910
+ "API-version": {
911
+ "schema": {
912
+ "type": "string"
913
+ },
914
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
915
+ }
916
+ },
917
+ "content": {
918
+ "application/json": {
919
+ "schema": {
920
+ "$ref": "#/components/schemas/DetailError"
921
+ }
922
+ }
923
+ },
924
+ "description": ""
925
+ }
926
+ }
927
+ }
928
+ },
929
+ "/producten/{uuid}": {
930
+ "get": {
931
+ "operationId": "producten_retrieve",
932
+ "summary": "Een specifiek PRODUCT opvragen.",
933
+ "parameters": [
934
+ {
935
+ "in": "path",
936
+ "name": "uuid",
937
+ "schema": {
938
+ "type": "string",
939
+ "format": "uuid"
940
+ },
941
+ "required": true
942
+ }
943
+ ],
944
+ "tags": [
945
+ "producten"
946
+ ],
947
+ "security": [
948
+ {
949
+ "OpenID": []
950
+ },
951
+ {
952
+ "tokenAuth": []
953
+ }
954
+ ],
955
+ "responses": {
956
+ "200": {
957
+ "headers": {
958
+ "API-version": {
959
+ "schema": {
960
+ "type": "string"
961
+ },
962
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
963
+ }
964
+ },
965
+ "content": {
966
+ "application/json": {
967
+ "schema": {
968
+ "$ref": "#/components/schemas/Product"
969
+ },
970
+ "examples": {
971
+ "ProductResponse": {
972
+ "value": {
973
+ "uuid": "da0df49a-cd71-4e24-9bae-5be8b01f2c36",
974
+ "url": "https://gemeente.open-product.nl/producten/api/v0/producten/da0df49a-cd71-4e24-9bae-5be8b01f2c36",
975
+ "naam": "verhuurvergunning: straatweg 14",
976
+ "start_datum": "2024-12-01",
977
+ "eind_datum": "2026-12-01",
978
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
979
+ "update_datum": "2019-08-24T14:15:22Z",
980
+ "producttype": {
981
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
982
+ "code": "129380-A21231",
983
+ "keywords": [
984
+ "auto"
985
+ ],
986
+ "uniforme_product_naam": "parkeervergunning",
987
+ "toegestane_statussen": [
988
+ "gereed"
989
+ ],
990
+ "gepubliceerd": true,
991
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
992
+ "update_datum": "2019-08-24T14:15:22Z",
993
+ "themas": [
994
+ {
995
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
996
+ "naam": "Parkeren",
997
+ "beschrijving": ".....",
998
+ "gepubliceerd": true,
999
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1000
+ "update_datum": "2019-08-24T14:15:22Z",
1001
+ "hoofd_thema": "41ec14a8-ca7d-43a9-a4a8-46f9587c8d91",
1002
+ "publicatie_start_datum": "2019-09-24",
1003
+ "publicatie_eind_datum": "2030-09-24"
1004
+ }
1005
+ ]
1006
+ },
1007
+ "gepubliceerd": true,
1008
+ "eigenaren": [
1009
+ {
1010
+ "uuid": "9de01697-7fc5-4113-803c-a8c9a8dad4f2",
1011
+ "bsn": "111222333"
1012
+ }
1013
+ ],
1014
+ "documenten": [
1015
+ {
1016
+ "urn": "urn:nld:maykin:openzaak:drc:document:uuid:99a8bd4f-4144-4105-9850-e477628852fc",
1017
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
1018
+ }
1019
+ ],
1020
+ "zaken": [
1021
+ {
1022
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf",
1023
+ "url": "https://gemeente-a.zgw.nl/zaken/eb188bea-51f2-44f0-8acc-eec1c710b4bf"
1024
+ }
1025
+ ],
1026
+ "taken": [
1027
+ {
1028
+ "urn": "urn:nld:maykin:openzaak:ttc:taak:uuid:cec996f4-2efa-4307-a035-32c2c9032e89",
1029
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
1030
+ }
1031
+ ],
1032
+ "status": "gereed",
1033
+ "prijs": "20.20",
1034
+ "frequentie": "eenmalig",
1035
+ "verbruiksobject": {
1036
+ "uren": 130
1037
+ },
1038
+ "dataobject": {
1039
+ "max_uren": 150
1040
+ },
1041
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1",
1042
+ "aanvraag_zaak_url": "https://maykin.ztc.com/zaken/d42613cd-ee22-4455-808c-c19c7b8442a2"
1043
+ },
1044
+ "summary": "product response"
1045
+ }
1046
+ }
1047
+ }
1048
+ },
1049
+ "description": ""
1050
+ },
1051
+ "400": {
1052
+ "headers": {
1053
+ "API-version": {
1054
+ "schema": {
1055
+ "type": "string"
1056
+ },
1057
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1058
+ }
1059
+ },
1060
+ "content": {
1061
+ "application/json": {
1062
+ "schema": {
1063
+ "$ref": "#/components/schemas/Error"
1064
+ },
1065
+ "examples": {
1066
+ "BadRequestExample": {
1067
+ "value": {
1068
+ "veld_a": [
1069
+ "Dit veld is vereist."
1070
+ ],
1071
+ "veld_b": [
1072
+ "‘<uuid>’ is geen geldige UUID."
1073
+ ]
1074
+ },
1075
+ "summary": "Bad request example",
1076
+ "description": "Errors worden per veld teruggegeven. Hieronder volgt een voorbeeld."
1077
+ }
1078
+ }
1079
+ }
1080
+ },
1081
+ "description": "Validation error"
1082
+ },
1083
+ "403": {
1084
+ "headers": {
1085
+ "API-version": {
1086
+ "schema": {
1087
+ "type": "string"
1088
+ },
1089
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1090
+ }
1091
+ },
1092
+ "content": {
1093
+ "application/json": {
1094
+ "schema": {
1095
+ "$ref": "#/components/schemas/DetailError"
1096
+ }
1097
+ }
1098
+ },
1099
+ "description": ""
1100
+ }
1101
+ }
1102
+ },
1103
+ "put": {
1104
+ "operationId": "producten_update",
1105
+ "summary": "Werk een PRODUCT in zijn geheel bij.",
1106
+ "parameters": [
1107
+ {
1108
+ "in": "path",
1109
+ "name": "uuid",
1110
+ "schema": {
1111
+ "type": "string",
1112
+ "format": "uuid"
1113
+ },
1114
+ "required": true
1115
+ }
1116
+ ],
1117
+ "tags": [
1118
+ "producten"
1119
+ ],
1120
+ "requestBody": {
1121
+ "content": {
1122
+ "application/json": {
1123
+ "schema": {
1124
+ "$ref": "#/components/schemas/ProductRequest"
1125
+ },
1126
+ "examples": {
1127
+ "ProductRequest": {
1128
+ "value": {
1129
+ "naam": "verhuurvergunning: straatweg 14",
1130
+ "start_datum": "2024-12-01",
1131
+ "eind_datum": "2026-12-01",
1132
+ "producttype_uuid": "95792000-d57f-4d3a-b14c-c4c7aa964907",
1133
+ "gepubliceerd": false,
1134
+ "eigenaren": [
1135
+ {
1136
+ "bsn": "111222333"
1137
+ }
1138
+ ],
1139
+ "status": "gereed",
1140
+ "prijs": "20.20",
1141
+ "frequentie": "eenmalig",
1142
+ "verbruiksobject": {
1143
+ "uren": 130
1144
+ },
1145
+ "dataobject": {
1146
+ "max_uren": 150
1147
+ },
1148
+ "documenten": [
1149
+ {
1150
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
1151
+ }
1152
+ ],
1153
+ "zaken": [
1154
+ {
1155
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf"
1156
+ }
1157
+ ],
1158
+ "taken": [
1159
+ {
1160
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
1161
+ }
1162
+ ],
1163
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1"
1164
+ },
1165
+ "summary": "product request"
1166
+ }
1167
+ }
1168
+ }
1169
+ },
1170
+ "required": true
1171
+ },
1172
+ "security": [
1173
+ {
1174
+ "OpenID": []
1175
+ },
1176
+ {
1177
+ "tokenAuth": []
1178
+ }
1179
+ ],
1180
+ "responses": {
1181
+ "200": {
1182
+ "headers": {
1183
+ "API-version": {
1184
+ "schema": {
1185
+ "type": "string"
1186
+ },
1187
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1188
+ }
1189
+ },
1190
+ "content": {
1191
+ "application/json": {
1192
+ "schema": {
1193
+ "$ref": "#/components/schemas/Product"
1194
+ },
1195
+ "examples": {
1196
+ "ProductResponse": {
1197
+ "value": {
1198
+ "uuid": "da0df49a-cd71-4e24-9bae-5be8b01f2c36",
1199
+ "url": "https://gemeente.open-product.nl/producten/api/v0/producten/da0df49a-cd71-4e24-9bae-5be8b01f2c36",
1200
+ "naam": "verhuurvergunning: straatweg 14",
1201
+ "start_datum": "2024-12-01",
1202
+ "eind_datum": "2026-12-01",
1203
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1204
+ "update_datum": "2019-08-24T14:15:22Z",
1205
+ "producttype": {
1206
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
1207
+ "code": "129380-A21231",
1208
+ "keywords": [
1209
+ "auto"
1210
+ ],
1211
+ "uniforme_product_naam": "parkeervergunning",
1212
+ "toegestane_statussen": [
1213
+ "gereed"
1214
+ ],
1215
+ "gepubliceerd": true,
1216
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1217
+ "update_datum": "2019-08-24T14:15:22Z",
1218
+ "themas": [
1219
+ {
1220
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
1221
+ "naam": "Parkeren",
1222
+ "beschrijving": ".....",
1223
+ "gepubliceerd": true,
1224
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1225
+ "update_datum": "2019-08-24T14:15:22Z",
1226
+ "hoofd_thema": "41ec14a8-ca7d-43a9-a4a8-46f9587c8d91",
1227
+ "publicatie_start_datum": "2019-09-24",
1228
+ "publicatie_eind_datum": "2030-09-24"
1229
+ }
1230
+ ]
1231
+ },
1232
+ "gepubliceerd": true,
1233
+ "eigenaren": [
1234
+ {
1235
+ "uuid": "9de01697-7fc5-4113-803c-a8c9a8dad4f2",
1236
+ "bsn": "111222333"
1237
+ }
1238
+ ],
1239
+ "documenten": [
1240
+ {
1241
+ "urn": "urn:nld:maykin:openzaak:drc:document:uuid:99a8bd4f-4144-4105-9850-e477628852fc",
1242
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
1243
+ }
1244
+ ],
1245
+ "zaken": [
1246
+ {
1247
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf",
1248
+ "url": "https://gemeente-a.zgw.nl/zaken/eb188bea-51f2-44f0-8acc-eec1c710b4bf"
1249
+ }
1250
+ ],
1251
+ "taken": [
1252
+ {
1253
+ "urn": "urn:nld:maykin:openzaak:ttc:taak:uuid:cec996f4-2efa-4307-a035-32c2c9032e89",
1254
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
1255
+ }
1256
+ ],
1257
+ "status": "gereed",
1258
+ "prijs": "20.20",
1259
+ "frequentie": "eenmalig",
1260
+ "verbruiksobject": {
1261
+ "uren": 130
1262
+ },
1263
+ "dataobject": {
1264
+ "max_uren": 150
1265
+ },
1266
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1",
1267
+ "aanvraag_zaak_url": "https://maykin.ztc.com/zaken/d42613cd-ee22-4455-808c-c19c7b8442a2"
1268
+ },
1269
+ "summary": "product response"
1270
+ }
1271
+ }
1272
+ }
1273
+ },
1274
+ "description": ""
1275
+ },
1276
+ "400": {
1277
+ "headers": {
1278
+ "API-version": {
1279
+ "schema": {
1280
+ "type": "string"
1281
+ },
1282
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1283
+ }
1284
+ },
1285
+ "content": {
1286
+ "application/json": {
1287
+ "schema": {
1288
+ "$ref": "#/components/schemas/Error"
1289
+ },
1290
+ "examples": {
1291
+ "BadRequestExample": {
1292
+ "value": {
1293
+ "veld_a": [
1294
+ "Dit veld is vereist."
1295
+ ],
1296
+ "veld_b": [
1297
+ "‘<uuid>’ is geen geldige UUID."
1298
+ ]
1299
+ },
1300
+ "summary": "Bad request example",
1301
+ "description": "Errors worden per veld teruggegeven. Hieronder volgt een voorbeeld."
1302
+ }
1303
+ }
1304
+ }
1305
+ },
1306
+ "description": "Validation error"
1307
+ },
1308
+ "403": {
1309
+ "headers": {
1310
+ "API-version": {
1311
+ "schema": {
1312
+ "type": "string"
1313
+ },
1314
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1315
+ }
1316
+ },
1317
+ "content": {
1318
+ "application/json": {
1319
+ "schema": {
1320
+ "$ref": "#/components/schemas/DetailError"
1321
+ }
1322
+ }
1323
+ },
1324
+ "description": ""
1325
+ }
1326
+ }
1327
+ },
1328
+ "patch": {
1329
+ "operationId": "producten_partial_update",
1330
+ "summary": "Werk een PRODUCT deels bij.",
1331
+ "parameters": [
1332
+ {
1333
+ "in": "path",
1334
+ "name": "uuid",
1335
+ "schema": {
1336
+ "type": "string",
1337
+ "format": "uuid"
1338
+ },
1339
+ "required": true
1340
+ }
1341
+ ],
1342
+ "tags": [
1343
+ "producten"
1344
+ ],
1345
+ "requestBody": {
1346
+ "content": {
1347
+ "application/json": {
1348
+ "schema": {
1349
+ "$ref": "#/components/schemas/PatchedProductRequest"
1350
+ },
1351
+ "examples": {
1352
+ "ProductRequest": {
1353
+ "value": {
1354
+ "naam": "verhuurvergunning: straatweg 14",
1355
+ "start_datum": "2024-12-01",
1356
+ "eind_datum": "2026-12-01",
1357
+ "producttype_uuid": "95792000-d57f-4d3a-b14c-c4c7aa964907",
1358
+ "gepubliceerd": false,
1359
+ "eigenaren": [
1360
+ {
1361
+ "bsn": "111222333"
1362
+ }
1363
+ ],
1364
+ "status": "gereed",
1365
+ "prijs": "20.20",
1366
+ "frequentie": "eenmalig",
1367
+ "verbruiksobject": {
1368
+ "uren": 130
1369
+ },
1370
+ "dataobject": {
1371
+ "max_uren": 150
1372
+ },
1373
+ "documenten": [
1374
+ {
1375
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
1376
+ }
1377
+ ],
1378
+ "zaken": [
1379
+ {
1380
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf"
1381
+ }
1382
+ ],
1383
+ "taken": [
1384
+ {
1385
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
1386
+ }
1387
+ ],
1388
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1"
1389
+ },
1390
+ "summary": "product request"
1391
+ }
1392
+ }
1393
+ }
1394
+ }
1395
+ },
1396
+ "security": [
1397
+ {
1398
+ "OpenID": []
1399
+ },
1400
+ {
1401
+ "tokenAuth": []
1402
+ }
1403
+ ],
1404
+ "responses": {
1405
+ "200": {
1406
+ "headers": {
1407
+ "API-version": {
1408
+ "schema": {
1409
+ "type": "string"
1410
+ },
1411
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1412
+ }
1413
+ },
1414
+ "content": {
1415
+ "application/json": {
1416
+ "schema": {
1417
+ "$ref": "#/components/schemas/Product"
1418
+ },
1419
+ "examples": {
1420
+ "ProductResponse": {
1421
+ "value": {
1422
+ "uuid": "da0df49a-cd71-4e24-9bae-5be8b01f2c36",
1423
+ "url": "https://gemeente.open-product.nl/producten/api/v0/producten/da0df49a-cd71-4e24-9bae-5be8b01f2c36",
1424
+ "naam": "verhuurvergunning: straatweg 14",
1425
+ "start_datum": "2024-12-01",
1426
+ "eind_datum": "2026-12-01",
1427
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1428
+ "update_datum": "2019-08-24T14:15:22Z",
1429
+ "producttype": {
1430
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
1431
+ "code": "129380-A21231",
1432
+ "keywords": [
1433
+ "auto"
1434
+ ],
1435
+ "uniforme_product_naam": "parkeervergunning",
1436
+ "toegestane_statussen": [
1437
+ "gereed"
1438
+ ],
1439
+ "gepubliceerd": true,
1440
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1441
+ "update_datum": "2019-08-24T14:15:22Z",
1442
+ "themas": [
1443
+ {
1444
+ "uuid": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
1445
+ "naam": "Parkeren",
1446
+ "beschrijving": ".....",
1447
+ "gepubliceerd": true,
1448
+ "aanmaak_datum": "2019-08-24T14:15:22Z",
1449
+ "update_datum": "2019-08-24T14:15:22Z",
1450
+ "hoofd_thema": "41ec14a8-ca7d-43a9-a4a8-46f9587c8d91",
1451
+ "publicatie_start_datum": "2019-09-24",
1452
+ "publicatie_eind_datum": "2030-09-24"
1453
+ }
1454
+ ]
1455
+ },
1456
+ "gepubliceerd": true,
1457
+ "eigenaren": [
1458
+ {
1459
+ "uuid": "9de01697-7fc5-4113-803c-a8c9a8dad4f2",
1460
+ "bsn": "111222333"
1461
+ }
1462
+ ],
1463
+ "documenten": [
1464
+ {
1465
+ "urn": "urn:nld:maykin:openzaak:drc:document:uuid:99a8bd4f-4144-4105-9850-e477628852fc",
1466
+ "url": "https://gemeente-a.zgw.nl/documenten/99a8bd4f-4144-4105-9850-e477628852fc"
1467
+ }
1468
+ ],
1469
+ "zaken": [
1470
+ {
1471
+ "urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:eb188bea-51f2-44f0-8acc-eec1c710b4bf",
1472
+ "url": "https://gemeente-a.zgw.nl/zaken/eb188bea-51f2-44f0-8acc-eec1c710b4bf"
1473
+ }
1474
+ ],
1475
+ "taken": [
1476
+ {
1477
+ "urn": "urn:nld:maykin:openzaak:ttc:taak:uuid:cec996f4-2efa-4307-a035-32c2c9032e89",
1478
+ "url": "https://gemeente-a.zgw.nl/taken/cec996f4-2efa-4307-a035-32c2c9032e89"
1479
+ }
1480
+ ],
1481
+ "status": "gereed",
1482
+ "prijs": "20.20",
1483
+ "frequentie": "eenmalig",
1484
+ "verbruiksobject": {
1485
+ "uren": 130
1486
+ },
1487
+ "dataobject": {
1488
+ "max_uren": 150
1489
+ },
1490
+ "aanvraag_zaak_urn": "urn:nld:maykin:openzaak:ztc:zaak:uuid:d42613cd-ee22-4455-808c-c19c7b8442a1",
1491
+ "aanvraag_zaak_url": "https://maykin.ztc.com/zaken/d42613cd-ee22-4455-808c-c19c7b8442a2"
1492
+ },
1493
+ "summary": "product response"
1494
+ }
1495
+ }
1496
+ }
1497
+ },
1498
+ "description": ""
1499
+ },
1500
+ "400": {
1501
+ "headers": {
1502
+ "API-version": {
1503
+ "schema": {
1504
+ "type": "string"
1505
+ },
1506
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1507
+ }
1508
+ },
1509
+ "content": {
1510
+ "application/json": {
1511
+ "schema": {
1512
+ "$ref": "#/components/schemas/Error"
1513
+ },
1514
+ "examples": {
1515
+ "BadRequestExample": {
1516
+ "value": {
1517
+ "veld_a": [
1518
+ "Dit veld is vereist."
1519
+ ],
1520
+ "veld_b": [
1521
+ "‘<uuid>’ is geen geldige UUID."
1522
+ ]
1523
+ },
1524
+ "summary": "Bad request example",
1525
+ "description": "Errors worden per veld teruggegeven. Hieronder volgt een voorbeeld."
1526
+ }
1527
+ }
1528
+ }
1529
+ },
1530
+ "description": "Validation error"
1531
+ },
1532
+ "403": {
1533
+ "headers": {
1534
+ "API-version": {
1535
+ "schema": {
1536
+ "type": "string"
1537
+ },
1538
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1539
+ }
1540
+ },
1541
+ "content": {
1542
+ "application/json": {
1543
+ "schema": {
1544
+ "$ref": "#/components/schemas/DetailError"
1545
+ }
1546
+ }
1547
+ },
1548
+ "description": ""
1549
+ }
1550
+ }
1551
+ },
1552
+ "delete": {
1553
+ "operationId": "producten_destroy",
1554
+ "summary": "Verwijder een PRODUCT.",
1555
+ "parameters": [
1556
+ {
1557
+ "in": "path",
1558
+ "name": "uuid",
1559
+ "schema": {
1560
+ "type": "string",
1561
+ "format": "uuid"
1562
+ },
1563
+ "required": true
1564
+ }
1565
+ ],
1566
+ "tags": [
1567
+ "producten"
1568
+ ],
1569
+ "security": [
1570
+ {
1571
+ "OpenID": []
1572
+ },
1573
+ {
1574
+ "tokenAuth": []
1575
+ }
1576
+ ],
1577
+ "responses": {
1578
+ "204": {
1579
+ "headers": {
1580
+ "API-version": {
1581
+ "schema": {
1582
+ "type": "string"
1583
+ },
1584
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1585
+ }
1586
+ },
1587
+ "description": "No response body"
1588
+ },
1589
+ "400": {
1590
+ "headers": {
1591
+ "API-version": {
1592
+ "schema": {
1593
+ "type": "string"
1594
+ },
1595
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1596
+ }
1597
+ },
1598
+ "content": {
1599
+ "application/json": {
1600
+ "schema": {
1601
+ "$ref": "#/components/schemas/Error"
1602
+ },
1603
+ "examples": {
1604
+ "BadRequestExample": {
1605
+ "value": {
1606
+ "veld_a": [
1607
+ "Dit veld is vereist."
1608
+ ],
1609
+ "veld_b": [
1610
+ "‘<uuid>’ is geen geldige UUID."
1611
+ ]
1612
+ },
1613
+ "summary": "Bad request example",
1614
+ "description": "Errors worden per veld teruggegeven. Hieronder volgt een voorbeeld."
1615
+ }
1616
+ }
1617
+ }
1618
+ },
1619
+ "description": "Validation error"
1620
+ },
1621
+ "403": {
1622
+ "headers": {
1623
+ "API-version": {
1624
+ "schema": {
1625
+ "type": "string"
1626
+ },
1627
+ "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
1628
+ }
1629
+ },
1630
+ "content": {
1631
+ "application/json": {
1632
+ "schema": {
1633
+ "$ref": "#/components/schemas/DetailError"
1634
+ }
1635
+ }
1636
+ },
1637
+ "description": ""
1638
+ }
1639
+ }
1640
+ }
1641
+ }
1642
+ },
1643
+ "components": {
1644
+ "schemas": {
1645
+ "BlankEnum": {
1646
+ "enum": [
1647
+ ""
1648
+ ]
1649
+ },
1650
+ "DetailError": {
1651
+ "type": "object",
1652
+ "properties": {
1653
+ "detail": {
1654
+ "type": "string"
1655
+ }
1656
+ },
1657
+ "required": [
1658
+ "detail"
1659
+ ]
1660
+ },
1661
+ "Eigenaar": {
1662
+ "type": "object",
1663
+ "properties": {
1664
+ "uuid": {
1665
+ "type": "string",
1666
+ "format": "uuid"
1667
+ },
1668
+ "bsn": {
1669
+ "type": "string",
1670
+ "title": "Burgerservicenummer",
1671
+ "description": "Het BSN van de product eigenaar, BSN van 8 karakters moet met een extra 0 beginnen."
1672
+ },
1673
+ "kvk_nummer": {
1674
+ "type": "string",
1675
+ "description": "Het kvk nummer van de product eigenaar",
1676
+ "pattern": "^[0-9]*$",
1677
+ "maxLength": 8,
1678
+ "minLength": 8
1679
+ },
1680
+ "vestigingsnummer": {
1681
+ "type": "string",
1682
+ "description": "Een korte unieke aanduiding van een vestiging.",
1683
+ "maxLength": 24
1684
+ },
1685
+ "klantnummer": {
1686
+ "type": "string",
1687
+ "description": "generiek veld voor de identificatie van een klant of partij.",
1688
+ "maxLength": 50
1689
+ }
1690
+ }
1691
+ },
1692
+ "EigenaarRequest": {
1693
+ "type": "object",
1694
+ "properties": {
1695
+ "uuid": {
1696
+ "type": "string",
1697
+ "format": "uuid"
1698
+ },
1699
+ "bsn": {
1700
+ "type": "string",
1701
+ "title": "Burgerservicenummer",
1702
+ "description": "Het BSN van de product eigenaar, BSN van 8 karakters moet met een extra 0 beginnen."
1703
+ },
1704
+ "kvk_nummer": {
1705
+ "type": "string",
1706
+ "description": "Het kvk nummer van de product eigenaar",
1707
+ "pattern": "^[0-9]*$",
1708
+ "maxLength": 8,
1709
+ "minLength": 8
1710
+ },
1711
+ "vestigingsnummer": {
1712
+ "type": "string",
1713
+ "description": "Een korte unieke aanduiding van een vestiging.",
1714
+ "maxLength": 24
1715
+ },
1716
+ "klantnummer": {
1717
+ "type": "string",
1718
+ "description": "generiek veld voor de identificatie van een klant of partij.",
1719
+ "maxLength": 50
1720
+ }
1721
+ }
1722
+ },
1723
+ "Error": {
1724
+ "type": "object",
1725
+ "properties": {
1726
+ "veld_a": {
1727
+ "type": "array",
1728
+ "items": {
1729
+ "type": "string"
1730
+ }
1731
+ },
1732
+ "veld_b": {
1733
+ "type": "array",
1734
+ "items": {
1735
+ "type": "string"
1736
+ }
1737
+ }
1738
+ },
1739
+ "required": [
1740
+ "veld_a",
1741
+ "veld_b"
1742
+ ]
1743
+ },
1744
+ "FrequentieEnum": {
1745
+ "enum": [
1746
+ "eenmalig",
1747
+ "maandelijks",
1748
+ "jaarlijks"
1749
+ ],
1750
+ "type": "string",
1751
+ "description": "* `eenmalig` - Eenmalig\n* `maandelijks` - Maandelijks\n* `jaarlijks` - Jaarlijks"
1752
+ },
1753
+ "NestedDocument": {
1754
+ "type": "object",
1755
+ "properties": {
1756
+ "urn": {
1757
+ "type": "string",
1758
+ "nullable": true,
1759
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
1760
+ },
1761
+ "url": {
1762
+ "type": "string",
1763
+ "format": "uri",
1764
+ "nullable": true,
1765
+ "maxLength": 200
1766
+ }
1767
+ }
1768
+ },
1769
+ "NestedDocumentRequest": {
1770
+ "type": "object",
1771
+ "properties": {
1772
+ "urn": {
1773
+ "type": "string",
1774
+ "nullable": true,
1775
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
1776
+ },
1777
+ "url": {
1778
+ "type": "string",
1779
+ "format": "uri",
1780
+ "nullable": true,
1781
+ "maxLength": 200
1782
+ }
1783
+ }
1784
+ },
1785
+ "NestedProductType": {
1786
+ "type": "object",
1787
+ "properties": {
1788
+ "uuid": {
1789
+ "type": "string",
1790
+ "format": "uuid",
1791
+ "readOnly": true
1792
+ },
1793
+ "code": {
1794
+ "type": "string",
1795
+ "description": "code van het producttype.",
1796
+ "pattern": "^[A-Z0-9-]+$",
1797
+ "maxLength": 255
1798
+ },
1799
+ "keywords": {
1800
+ "type": "array",
1801
+ "items": {
1802
+ "type": "string",
1803
+ "maxLength": 100
1804
+ },
1805
+ "description": "Lijst van keywords waarop kan worden gezocht."
1806
+ },
1807
+ "uniforme_product_naam": {
1808
+ "type": "string",
1809
+ "description": "Uniforme product naam"
1810
+ },
1811
+ "toegestane_statussen": {
1812
+ "type": "array",
1813
+ "items": {
1814
+ "$ref": "#/components/schemas/ToegestaneStatussenEnum"
1815
+ },
1816
+ "description": "toegestane statussen voor producten van dit type."
1817
+ },
1818
+ "gepubliceerd": {
1819
+ "type": "boolean",
1820
+ "readOnly": true,
1821
+ "description": "Geeft aan of het producttype getoond kan worden."
1822
+ },
1823
+ "publicatie_start_datum": {
1824
+ "type": "string",
1825
+ "format": "date",
1826
+ "nullable": true,
1827
+ "title": "Publicatie startdatum",
1828
+ "description": "De datum waarop het producttype gepubliceerd is"
1829
+ },
1830
+ "publicatie_eind_datum": {
1831
+ "type": "string",
1832
+ "format": "date",
1833
+ "nullable": true,
1834
+ "title": "Publicatie einddatum",
1835
+ "description": "De datum waarop de publicatie eindigt"
1836
+ },
1837
+ "aanmaak_datum": {
1838
+ "type": "string",
1839
+ "format": "date-time",
1840
+ "readOnly": true,
1841
+ "description": "De datum waarop het object is aangemaakt."
1842
+ },
1843
+ "update_datum": {
1844
+ "type": "string",
1845
+ "format": "date-time",
1846
+ "readOnly": true,
1847
+ "description": "De datum waarop het object voor het laatst is gewijzigd."
1848
+ },
1849
+ "themas": {
1850
+ "type": "array",
1851
+ "items": {
1852
+ "$ref": "#/components/schemas/NestedThema"
1853
+ }
1854
+ }
1855
+ },
1856
+ "required": [
1857
+ "aanmaak_datum",
1858
+ "code",
1859
+ "gepubliceerd",
1860
+ "themas",
1861
+ "uniforme_product_naam",
1862
+ "update_datum",
1863
+ "uuid"
1864
+ ]
1865
+ },
1866
+ "NestedProductTypeRequest": {
1867
+ "type": "object",
1868
+ "properties": {
1869
+ "code": {
1870
+ "type": "string",
1871
+ "minLength": 1,
1872
+ "description": "code van het producttype.",
1873
+ "pattern": "^[A-Z0-9-]+$",
1874
+ "maxLength": 255
1875
+ },
1876
+ "keywords": {
1877
+ "type": "array",
1878
+ "items": {
1879
+ "type": "string",
1880
+ "maxLength": 100
1881
+ },
1882
+ "description": "Lijst van keywords waarop kan worden gezocht."
1883
+ },
1884
+ "uniforme_product_naam": {
1885
+ "type": "string",
1886
+ "minLength": 1,
1887
+ "description": "Uniforme product naam"
1888
+ },
1889
+ "toegestane_statussen": {
1890
+ "type": "array",
1891
+ "items": {
1892
+ "$ref": "#/components/schemas/ToegestaneStatussenEnum"
1893
+ },
1894
+ "description": "toegestane statussen voor producten van dit type."
1895
+ },
1896
+ "publicatie_start_datum": {
1897
+ "type": "string",
1898
+ "format": "date",
1899
+ "nullable": true,
1900
+ "title": "Publicatie startdatum",
1901
+ "description": "De datum waarop het producttype gepubliceerd is"
1902
+ },
1903
+ "publicatie_eind_datum": {
1904
+ "type": "string",
1905
+ "format": "date",
1906
+ "nullable": true,
1907
+ "title": "Publicatie einddatum",
1908
+ "description": "De datum waarop de publicatie eindigt"
1909
+ },
1910
+ "themas": {
1911
+ "type": "array",
1912
+ "items": {
1913
+ "$ref": "#/components/schemas/NestedThemaRequest"
1914
+ }
1915
+ }
1916
+ },
1917
+ "required": [
1918
+ "code",
1919
+ "themas",
1920
+ "uniforme_product_naam"
1921
+ ]
1922
+ },
1923
+ "NestedTaak": {
1924
+ "type": "object",
1925
+ "properties": {
1926
+ "urn": {
1927
+ "type": "string",
1928
+ "nullable": true,
1929
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
1930
+ },
1931
+ "url": {
1932
+ "type": "string",
1933
+ "format": "uri",
1934
+ "nullable": true,
1935
+ "maxLength": 200
1936
+ }
1937
+ }
1938
+ },
1939
+ "NestedTaakRequest": {
1940
+ "type": "object",
1941
+ "properties": {
1942
+ "urn": {
1943
+ "type": "string",
1944
+ "nullable": true,
1945
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
1946
+ },
1947
+ "url": {
1948
+ "type": "string",
1949
+ "format": "uri",
1950
+ "nullable": true,
1951
+ "maxLength": 200
1952
+ }
1953
+ }
1954
+ },
1955
+ "NestedThema": {
1956
+ "type": "object",
1957
+ "properties": {
1958
+ "uuid": {
1959
+ "type": "string",
1960
+ "format": "uuid",
1961
+ "readOnly": true
1962
+ },
1963
+ "naam": {
1964
+ "type": "string",
1965
+ "description": "Naam van het thema.",
1966
+ "maxLength": 255
1967
+ },
1968
+ "beschrijving": {
1969
+ "type": "string",
1970
+ "description": "Beschrijving van het thema, ondersteund markdown format."
1971
+ },
1972
+ "gepubliceerd": {
1973
+ "type": "boolean",
1974
+ "description": "Geeft aan of het thema getoond kan worden."
1975
+ },
1976
+ "aanmaak_datum": {
1977
+ "type": "string",
1978
+ "format": "date-time",
1979
+ "readOnly": true,
1980
+ "description": "De datum waarop het object is aangemaakt."
1981
+ },
1982
+ "update_datum": {
1983
+ "type": "string",
1984
+ "format": "date-time",
1985
+ "readOnly": true,
1986
+ "description": "De datum waarop het object voor het laatst is gewijzigd."
1987
+ },
1988
+ "hoofd_thema": {
1989
+ "type": "string",
1990
+ "format": "uuid",
1991
+ "description": "Het hoofd thema waaronder dit thema valt."
1992
+ }
1993
+ },
1994
+ "required": [
1995
+ "aanmaak_datum",
1996
+ "hoofd_thema",
1997
+ "naam",
1998
+ "update_datum",
1999
+ "uuid"
2000
+ ]
2001
+ },
2002
+ "NestedThemaRequest": {
2003
+ "type": "object",
2004
+ "properties": {
2005
+ "naam": {
2006
+ "type": "string",
2007
+ "minLength": 1,
2008
+ "description": "Naam van het thema.",
2009
+ "maxLength": 255
2010
+ },
2011
+ "beschrijving": {
2012
+ "type": "string",
2013
+ "description": "Beschrijving van het thema, ondersteund markdown format."
2014
+ },
2015
+ "gepubliceerd": {
2016
+ "type": "boolean",
2017
+ "description": "Geeft aan of het thema getoond kan worden."
2018
+ },
2019
+ "hoofd_thema": {
2020
+ "type": "string",
2021
+ "format": "uuid",
2022
+ "description": "Het hoofd thema waaronder dit thema valt."
2023
+ }
2024
+ },
2025
+ "required": [
2026
+ "hoofd_thema",
2027
+ "naam"
2028
+ ]
2029
+ },
2030
+ "NestedZaak": {
2031
+ "type": "object",
2032
+ "properties": {
2033
+ "urn": {
2034
+ "type": "string",
2035
+ "nullable": true,
2036
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
2037
+ },
2038
+ "url": {
2039
+ "type": "string",
2040
+ "format": "uri",
2041
+ "nullable": true,
2042
+ "maxLength": 200
2043
+ }
2044
+ }
2045
+ },
2046
+ "NestedZaakRequest": {
2047
+ "type": "object",
2048
+ "properties": {
2049
+ "urn": {
2050
+ "type": "string",
2051
+ "nullable": true,
2052
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
2053
+ },
2054
+ "url": {
2055
+ "type": "string",
2056
+ "format": "uri",
2057
+ "nullable": true,
2058
+ "maxLength": 200
2059
+ }
2060
+ }
2061
+ },
2062
+ "PaginatedProductList": {
2063
+ "type": "object",
2064
+ "required": [
2065
+ "count",
2066
+ "results"
2067
+ ],
2068
+ "properties": {
2069
+ "count": {
2070
+ "type": "integer",
2071
+ "example": 123
2072
+ },
2073
+ "next": {
2074
+ "type": "string",
2075
+ "nullable": true,
2076
+ "format": "uri",
2077
+ "example": "http://api.example.org/accounts/?page=4"
2078
+ },
2079
+ "previous": {
2080
+ "type": "string",
2081
+ "nullable": true,
2082
+ "format": "uri",
2083
+ "example": "http://api.example.org/accounts/?page=2"
2084
+ },
2085
+ "results": {
2086
+ "type": "array",
2087
+ "items": {
2088
+ "$ref": "#/components/schemas/Product"
2089
+ }
2090
+ }
2091
+ }
2092
+ },
2093
+ "PatchedProductRequest": {
2094
+ "type": "object",
2095
+ "properties": {
2096
+ "naam": {
2097
+ "type": "string",
2098
+ "description": "De naam van dit product.",
2099
+ "maxLength": 255
2100
+ },
2101
+ "start_datum": {
2102
+ "type": "string",
2103
+ "format": "date",
2104
+ "nullable": true,
2105
+ "description": "De start datum van dit product. Op deze datum zal de status van het product automatisch naar ACTIEF worden gezet. Op het moment dat de start_datum wordt ingevuld moet de status ACTIEF op het producttype zijn toegestaan."
2106
+ },
2107
+ "eind_datum": {
2108
+ "type": "string",
2109
+ "format": "date",
2110
+ "nullable": true,
2111
+ "description": "De einddatum van dit product. Op deze datum zal de status van het product automatisch naar VERLOPEN worden gezet. Op het moment dat de eind_datum wordt ingevuld moet de status VERLOPEN op het producttype zijn toegestaan."
2112
+ },
2113
+ "producttype_uuid": {
2114
+ "type": "string",
2115
+ "format": "uuid",
2116
+ "writeOnly": true
2117
+ },
2118
+ "gepubliceerd": {
2119
+ "type": "boolean",
2120
+ "description": "Geeft aan of het product getoond kan worden."
2121
+ },
2122
+ "eigenaren": {
2123
+ "type": "array",
2124
+ "items": {
2125
+ "$ref": "#/components/schemas/EigenaarRequest"
2126
+ }
2127
+ },
2128
+ "documenten": {
2129
+ "type": "array",
2130
+ "items": {
2131
+ "$ref": "#/components/schemas/NestedDocumentRequest"
2132
+ }
2133
+ },
2134
+ "zaken": {
2135
+ "type": "array",
2136
+ "items": {
2137
+ "$ref": "#/components/schemas/NestedZaakRequest"
2138
+ }
2139
+ },
2140
+ "taken": {
2141
+ "type": "array",
2142
+ "items": {
2143
+ "$ref": "#/components/schemas/NestedTaakRequest"
2144
+ }
2145
+ },
2146
+ "status": {
2147
+ "allOf": [
2148
+ {
2149
+ "$ref": "#/components/schemas/StatusEnum"
2150
+ }
2151
+ ],
2152
+ "description": "De status opties worden bepaald door het veld 'toegestane statussen' van het gerelateerde producttype. Via start & eind_datum kan de status automatisch naar ACTIEF of VERLOPEN worden gezet (mits deze statussen zijn toegestaan op het producttype).\n\n* `initieel` - Initieel\n* `in_aanvraag` - In aanvraag\n* `gereed` - Gereed\n* `actief` - Actief\n* `ingetrokken` - Ingetrokken\n* `geweigerd` - Geweigerd\n* `verlopen` - Verlopen"
2153
+ },
2154
+ "prijs": {
2155
+ "type": "string",
2156
+ "format": "decimal",
2157
+ "pattern": "^-?\\d{0,6}(?:\\.\\d{0,2})?$",
2158
+ "nullable": true,
2159
+ "description": "De prijs van het product."
2160
+ },
2161
+ "frequentie": {
2162
+ "title": "Prijs frequentie",
2163
+ "description": "De frequentie van betalingen.\n\n* `eenmalig` - Eenmalig\n* `maandelijks` - Maandelijks\n* `jaarlijks` - Jaarlijks",
2164
+ "oneOf": [
2165
+ {
2166
+ "$ref": "#/components/schemas/FrequentieEnum"
2167
+ },
2168
+ {
2169
+ "$ref": "#/components/schemas/BlankEnum"
2170
+ }
2171
+ ]
2172
+ },
2173
+ "verbruiksobject": {
2174
+ "type": "object",
2175
+ "additionalProperties": true,
2176
+ "nullable": true,
2177
+ "description": "Verbruiksobject van dit product. Wordt gevalideerd met het `verbruiksobject_schema` uit het producttype."
2178
+ },
2179
+ "dataobject": {
2180
+ "type": "object",
2181
+ "additionalProperties": true,
2182
+ "nullable": true,
2183
+ "description": "Dataobject van dit product. Wordt gevalideerd met het `dataobject_schema` uit het producttype."
2184
+ },
2185
+ "aanvraag_zaak_urn": {
2186
+ "type": "string",
2187
+ "nullable": true,
2188
+ "description": "De zaak waaruit dit product is ontstaan. (<organisatie>:<systeem>:<component>:<resource>:<identificatie>)",
2189
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
2190
+ },
2191
+ "aanvraag_zaak_url": {
2192
+ "type": "string",
2193
+ "format": "uri",
2194
+ "nullable": true,
2195
+ "description": "De zaak waaruit dit product is ontstaan.",
2196
+ "maxLength": 200
2197
+ }
2198
+ }
2199
+ },
2200
+ "Product": {
2201
+ "type": "object",
2202
+ "properties": {
2203
+ "uuid": {
2204
+ "type": "string",
2205
+ "format": "uuid",
2206
+ "readOnly": true
2207
+ },
2208
+ "url": {
2209
+ "type": "string",
2210
+ "format": "uri",
2211
+ "readOnly": true,
2212
+ "minLength": 1,
2213
+ "maxLength": 1000,
2214
+ "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object."
2215
+ },
2216
+ "naam": {
2217
+ "type": "string",
2218
+ "description": "De naam van dit product.",
2219
+ "maxLength": 255
2220
+ },
2221
+ "start_datum": {
2222
+ "type": "string",
2223
+ "format": "date",
2224
+ "nullable": true,
2225
+ "description": "De start datum van dit product. Op deze datum zal de status van het product automatisch naar ACTIEF worden gezet. Op het moment dat de start_datum wordt ingevuld moet de status ACTIEF op het producttype zijn toegestaan."
2226
+ },
2227
+ "eind_datum": {
2228
+ "type": "string",
2229
+ "format": "date",
2230
+ "nullable": true,
2231
+ "description": "De einddatum van dit product. Op deze datum zal de status van het product automatisch naar VERLOPEN worden gezet. Op het moment dat de eind_datum wordt ingevuld moet de status VERLOPEN op het producttype zijn toegestaan."
2232
+ },
2233
+ "aanmaak_datum": {
2234
+ "type": "string",
2235
+ "format": "date-time",
2236
+ "readOnly": true,
2237
+ "description": "De datum waarop het object is aangemaakt."
2238
+ },
2239
+ "update_datum": {
2240
+ "type": "string",
2241
+ "format": "date-time",
2242
+ "readOnly": true,
2243
+ "description": "De datum waarop het object voor het laatst is gewijzigd."
2244
+ },
2245
+ "producttype": {
2246
+ "allOf": [
2247
+ {
2248
+ "$ref": "#/components/schemas/NestedProductType"
2249
+ }
2250
+ ],
2251
+ "readOnly": true
2252
+ },
2253
+ "gepubliceerd": {
2254
+ "type": "boolean",
2255
+ "description": "Geeft aan of het product getoond kan worden."
2256
+ },
2257
+ "eigenaren": {
2258
+ "type": "array",
2259
+ "items": {
2260
+ "$ref": "#/components/schemas/Eigenaar"
2261
+ }
2262
+ },
2263
+ "documenten": {
2264
+ "type": "array",
2265
+ "items": {
2266
+ "$ref": "#/components/schemas/NestedDocument"
2267
+ }
2268
+ },
2269
+ "zaken": {
2270
+ "type": "array",
2271
+ "items": {
2272
+ "$ref": "#/components/schemas/NestedZaak"
2273
+ }
2274
+ },
2275
+ "taken": {
2276
+ "type": "array",
2277
+ "items": {
2278
+ "$ref": "#/components/schemas/NestedTaak"
2279
+ }
2280
+ },
2281
+ "status": {
2282
+ "allOf": [
2283
+ {
2284
+ "$ref": "#/components/schemas/StatusEnum"
2285
+ }
2286
+ ],
2287
+ "description": "De status opties worden bepaald door het veld 'toegestane statussen' van het gerelateerde producttype. Via start & eind_datum kan de status automatisch naar ACTIEF of VERLOPEN worden gezet (mits deze statussen zijn toegestaan op het producttype).\n\n* `initieel` - Initieel\n* `in_aanvraag` - In aanvraag\n* `gereed` - Gereed\n* `actief` - Actief\n* `ingetrokken` - Ingetrokken\n* `geweigerd` - Geweigerd\n* `verlopen` - Verlopen"
2288
+ },
2289
+ "prijs": {
2290
+ "type": "string",
2291
+ "format": "decimal",
2292
+ "pattern": "^-?\\d{0,6}(?:\\.\\d{0,2})?$",
2293
+ "nullable": true,
2294
+ "description": "De prijs van het product."
2295
+ },
2296
+ "frequentie": {
2297
+ "title": "Prijs frequentie",
2298
+ "description": "De frequentie van betalingen.\n\n* `eenmalig` - Eenmalig\n* `maandelijks` - Maandelijks\n* `jaarlijks` - Jaarlijks",
2299
+ "oneOf": [
2300
+ {
2301
+ "$ref": "#/components/schemas/FrequentieEnum"
2302
+ },
2303
+ {
2304
+ "$ref": "#/components/schemas/BlankEnum"
2305
+ }
2306
+ ]
2307
+ },
2308
+ "verbruiksobject": {
2309
+ "type": "object",
2310
+ "additionalProperties": true,
2311
+ "nullable": true,
2312
+ "description": "Verbruiksobject van dit product. Wordt gevalideerd met het `verbruiksobject_schema` uit het producttype."
2313
+ },
2314
+ "dataobject": {
2315
+ "type": "object",
2316
+ "additionalProperties": true,
2317
+ "nullable": true,
2318
+ "description": "Dataobject van dit product. Wordt gevalideerd met het `dataobject_schema` uit het producttype."
2319
+ },
2320
+ "aanvraag_zaak_urn": {
2321
+ "type": "string",
2322
+ "nullable": true,
2323
+ "description": "De zaak waaruit dit product is ontstaan. (<organisatie>:<systeem>:<component>:<resource>:<identificatie>)",
2324
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
2325
+ },
2326
+ "aanvraag_zaak_url": {
2327
+ "type": "string",
2328
+ "format": "uri",
2329
+ "nullable": true,
2330
+ "description": "De zaak waaruit dit product is ontstaan.",
2331
+ "maxLength": 200
2332
+ }
2333
+ },
2334
+ "required": [
2335
+ "aanmaak_datum",
2336
+ "eigenaren",
2337
+ "producttype",
2338
+ "update_datum",
2339
+ "url",
2340
+ "uuid"
2341
+ ]
2342
+ },
2343
+ "ProductRequest": {
2344
+ "type": "object",
2345
+ "properties": {
2346
+ "naam": {
2347
+ "type": "string",
2348
+ "description": "De naam van dit product.",
2349
+ "maxLength": 255
2350
+ },
2351
+ "start_datum": {
2352
+ "type": "string",
2353
+ "format": "date",
2354
+ "nullable": true,
2355
+ "description": "De start datum van dit product. Op deze datum zal de status van het product automatisch naar ACTIEF worden gezet. Op het moment dat de start_datum wordt ingevuld moet de status ACTIEF op het producttype zijn toegestaan."
2356
+ },
2357
+ "eind_datum": {
2358
+ "type": "string",
2359
+ "format": "date",
2360
+ "nullable": true,
2361
+ "description": "De einddatum van dit product. Op deze datum zal de status van het product automatisch naar VERLOPEN worden gezet. Op het moment dat de eind_datum wordt ingevuld moet de status VERLOPEN op het producttype zijn toegestaan."
2362
+ },
2363
+ "producttype_uuid": {
2364
+ "type": "string",
2365
+ "format": "uuid",
2366
+ "writeOnly": true
2367
+ },
2368
+ "gepubliceerd": {
2369
+ "type": "boolean",
2370
+ "description": "Geeft aan of het product getoond kan worden."
2371
+ },
2372
+ "eigenaren": {
2373
+ "type": "array",
2374
+ "items": {
2375
+ "$ref": "#/components/schemas/EigenaarRequest"
2376
+ }
2377
+ },
2378
+ "documenten": {
2379
+ "type": "array",
2380
+ "items": {
2381
+ "$ref": "#/components/schemas/NestedDocumentRequest"
2382
+ }
2383
+ },
2384
+ "zaken": {
2385
+ "type": "array",
2386
+ "items": {
2387
+ "$ref": "#/components/schemas/NestedZaakRequest"
2388
+ }
2389
+ },
2390
+ "taken": {
2391
+ "type": "array",
2392
+ "items": {
2393
+ "$ref": "#/components/schemas/NestedTaakRequest"
2394
+ }
2395
+ },
2396
+ "status": {
2397
+ "allOf": [
2398
+ {
2399
+ "$ref": "#/components/schemas/StatusEnum"
2400
+ }
2401
+ ],
2402
+ "description": "De status opties worden bepaald door het veld 'toegestane statussen' van het gerelateerde producttype. Via start & eind_datum kan de status automatisch naar ACTIEF of VERLOPEN worden gezet (mits deze statussen zijn toegestaan op het producttype).\n\n* `initieel` - Initieel\n* `in_aanvraag` - In aanvraag\n* `gereed` - Gereed\n* `actief` - Actief\n* `ingetrokken` - Ingetrokken\n* `geweigerd` - Geweigerd\n* `verlopen` - Verlopen"
2403
+ },
2404
+ "prijs": {
2405
+ "type": "string",
2406
+ "format": "decimal",
2407
+ "pattern": "^-?\\d{0,6}(?:\\.\\d{0,2})?$",
2408
+ "nullable": true,
2409
+ "description": "De prijs van het product."
2410
+ },
2411
+ "frequentie": {
2412
+ "title": "Prijs frequentie",
2413
+ "description": "De frequentie van betalingen.\n\n* `eenmalig` - Eenmalig\n* `maandelijks` - Maandelijks\n* `jaarlijks` - Jaarlijks",
2414
+ "oneOf": [
2415
+ {
2416
+ "$ref": "#/components/schemas/FrequentieEnum"
2417
+ },
2418
+ {
2419
+ "$ref": "#/components/schemas/BlankEnum"
2420
+ }
2421
+ ]
2422
+ },
2423
+ "verbruiksobject": {
2424
+ "type": "object",
2425
+ "additionalProperties": true,
2426
+ "nullable": true,
2427
+ "description": "Verbruiksobject van dit product. Wordt gevalideerd met het `verbruiksobject_schema` uit het producttype."
2428
+ },
2429
+ "dataobject": {
2430
+ "type": "object",
2431
+ "additionalProperties": true,
2432
+ "nullable": true,
2433
+ "description": "Dataobject van dit product. Wordt gevalideerd met het `dataobject_schema` uit het producttype."
2434
+ },
2435
+ "aanvraag_zaak_urn": {
2436
+ "type": "string",
2437
+ "nullable": true,
2438
+ "description": "De zaak waaruit dit product is ontstaan. (<organisatie>:<systeem>:<component>:<resource>:<identificatie>)",
2439
+ "pattern": "^urn:[A-Za-z0-9](?:[A-Za-z0-9]|-){0,30}[A-Za-z0-9]:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/)*(?:\\?\\+(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:\\?=(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?(?:#(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])(?:(?:[A-Za-z0-9]|[-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@])|/|\\?)*)?$"
2440
+ },
2441
+ "aanvraag_zaak_url": {
2442
+ "type": "string",
2443
+ "format": "uri",
2444
+ "nullable": true,
2445
+ "description": "De zaak waaruit dit product is ontstaan.",
2446
+ "maxLength": 200
2447
+ }
2448
+ },
2449
+ "required": [
2450
+ "eigenaren",
2451
+ "producttype_uuid"
2452
+ ]
2453
+ },
2454
+ "StatusEnum": {
2455
+ "enum": [
2456
+ "initieel",
2457
+ "in_aanvraag",
2458
+ "gereed",
2459
+ "actief",
2460
+ "ingetrokken",
2461
+ "geweigerd",
2462
+ "verlopen"
2463
+ ],
2464
+ "type": "string",
2465
+ "description": "* `initieel` - Initieel\n* `in_aanvraag` - In aanvraag\n* `gereed` - Gereed\n* `actief` - Actief\n* `ingetrokken` - Ingetrokken\n* `geweigerd` - Geweigerd\n* `verlopen` - Verlopen"
2466
+ },
2467
+ "ToegestaneStatussenEnum": {
2468
+ "enum": [
2469
+ "in_aanvraag",
2470
+ "gereed",
2471
+ "actief",
2472
+ "ingetrokken",
2473
+ "geweigerd",
2474
+ "verlopen"
2475
+ ],
2476
+ "type": "string",
2477
+ "description": "* `in_aanvraag` - In aanvraag\n* `gereed` - Gereed\n* `actief` - Actief\n* `ingetrokken` - Ingetrokken\n* `geweigerd` - Geweigerd\n* `verlopen` - Verlopen"
2478
+ }
2479
+ },
2480
+ "securitySchemes": {
2481
+ "OpenID": {
2482
+ "type": "openIdConnect",
2483
+ "openIdConnectUrl": "https://example.com/.well-known/openid-configuration"
2484
+ },
2485
+ "tokenAuth": {
2486
+ "type": "apiKey",
2487
+ "in": "header",
2488
+ "name": "Authorization",
2489
+ "description": "Token-based authentication with required prefix \"Token\""
2490
+ }
2491
+ }
2492
+ },
2493
+ "servers": [
2494
+ {
2495
+ "url": "/producten/api/v1"
2496
+ }
2497
+ ],
2498
+ "tags": [
2499
+ {
2500
+ "name": "producten",
2501
+ "description": "\n## Opvragen en bewerken van PRODUCTEN.\n\n### Opmerkingen\n- Bij het aanmaken van een PRODUCT kunnen één of meerdere eigenaren worden toegevoegd, een eigenaar moet een bsn (en/of klantnummer) of een kvk nummer (met of zonder vestigingsnummer) hebben.\"\n- De status opties van een PRODUCT zijn afhankelijk van de `toegestane_statussen` van het producttype.\n- Via `start_datum` & `eind_datum` kan de status van een product automatisch op ACTIEF en VERLOPEN worden gezet.\n - Op het moment dat deze velden worden gezet moeten deze statussen zijn toegestaan op het producttype.\n - De status zal via de start_datum alleen naar ACTIEF veranderen mits de status INITIEEL, IN AANVRAAG of GEREED is. Voor de eind_datum zijn dit INTIEEL, IN AANVRAAG, GEREED of ACTIEF.\n- `verbruiksobject` & `dataobject` zijn JSON velden en worden gevalideerd vanuit `verbruiksobject_schema` & `dataobject_schema` van het producttype.\n- De velden `documenten`, `zaken` en `taken` wordt samen met het product genest aangemaakt of gewijzigd.\n - dit veld is een lijst van objecten.\n - Bij een PUT request word de bestaande lijst overschreven met de nieuwe lijst.\n - Bij een PATCH request wordt de lijst alleen overschreven als `documenten` wordt meegegeven.\n\n- Het veld `eigenaren` wordt samen met het product genest aangemaakt of gewijzigd maar heeft een paar verschillen met de hiervoor beschreven velden.\n - Bij een PUT request word de bestaande lijst overschreven met de nieuwe lijst.\n - Bij een PATCH request wordt de lijst alleen overschreven als het veld wordt meegegeven.\n - In een PUT of PATCH kan in een eigenaar object een bestaand `uuid` worden meegegeven zodat een bestaande eigenaar blijft bestaan.\n Zo kan ook een bestaande eigenaar worden gewijzigd.\n - eigenaren zonder `uuid` zullen worden aangemaakt in een PUT of PATCH.\n - bestaande eigenaren die niet in de lijst voorkomen met hun id zullen worden verwijderd.\n"
2502
+ }
2503
+ ]
2504
+ }