From 68b8cab9e26ba7864435388d70f95ade82cad793 Mon Sep 17 00:00:00 2001 From: matthijsbekendam Date: Mon, 24 Oct 2022 13:46:58 +0200 Subject: [PATCH 1/4] - requirements update to vng-api-common 1.11.0 - removed old notification dependency and added new one - changed viewset documentation for drf-spectacular - changed urls for drf-spectacular --- requirements/base.in | 2 +- requirements/base.txt | 103 +- requirements/ci.txt | 118 +- requirements/dev.txt | 118 +- requirements/production.txt | 116 +- src/brc/api/kanalen.py | 2 +- src/brc/api/schema.py | 30 +- src/brc/api/urls.py | 12 +- src/brc/api/viewsets.py | 295 ++-- src/brc/conf/api.py | 24 +- src/brc/conf/base.py | 7 +- src/brc/urls.py | 2 +- src/openapi.yaml | 3095 ++++++++++++++++++++++++----------- 13 files changed, 2635 insertions(+), 1289 deletions(-) diff --git a/requirements/base.in b/requirements/base.in index d48667f..d1592cf 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -19,4 +19,4 @@ django_redis django_capture_on_commit_callbacks djangorestframework -vng-api-common==1.8.0 +git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade#egg=vng_api_common diff --git a/requirements/base.txt b/requirements/base.txt index 244a101..2d81cb1 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -10,18 +10,24 @@ asgiref==3.5.2 # via django async-timeout==4.0.2 # via redis +attrs==22.1.0 + # via jsonschema babel==2.10.3 # via sphinx certifi==2022.9.24 - # via requests + # via + # django-simple-certmanager + # requests +cffi==1.15.1 + # via cryptography charset-normalizer==2.1.1 # via requests -coreapi==2.3.3 - # via drf-yasg -coreschema==0.0.4 +cryptography==38.0.1 # via - # coreapi - # drf-yasg + # cryptograpy + # pyopenssl +cryptograpy==0.0.0 + # via django-simple-certmanager deprecated==1.2.13 # via redis django==3.2.15 @@ -32,13 +38,19 @@ django==3.2.15 # django-choices # django-filter # django-markup + # django-privates # django-redis + # django-relativedelta # django-rest-framework-condition + # django-sendfile2 + # django-simple-certmanager # django-solo # djangorestframework # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common + # zgw-consumers django-axes==5.39.0 # via -r requirements/base.in django-capture-on-commit-callbacks==1.11.0 @@ -46,7 +58,9 @@ django-capture-on-commit-callbacks==1.11.0 django-choices==1.7.0 # via # -r requirements/base.in + # django-simple-certmanager # vng-api-common + # zgw-consumers django-cors-middleware==1.5.0 # via -r requirements/base.in django-filter==21.1 @@ -57,32 +71,51 @@ django-ipware==4.0.2 # via django-axes django-markup==1.3 # via -r requirements/base.in +django-privates==1.4.0 + # via django-simple-certmanager django-redis==5.2.0 # via -r requirements/base.in +django-relativedelta==1.1.2 + # via zgw-consumers django-rest-framework-condition==0.1.1 # via vng-api-common +django-sendfile2==0.7.0 + # via django-privates +django-simple-certmanager==1.1.0 + # via zgw-consumers django-solo==2.0.0 - # via vng-api-common + # via + # notifications-api-common + # vng-api-common + # zgw-consumers django-utils-six==2.0 # via -r requirements/base.in djangorestframework==3.12.4 # via # -r requirements/base.in # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common djangorestframework-camel-case==1.3.0 - # via vng-api-common + # via + # notifications-api-common + # vng-api-common docutils==0.17.1 # via # sphinx # sphinx-rtd-theme drf-nested-routers==0.93.4 # via vng-api-common -drf-yasg==1.21.4 +drf-spectacular==0.24.2 # via vng-api-common +faker==15.1.1 + # via zgw-consumers gemma-zds-client==1.0.1 - # via vng-api-common + # via + # notifications-api-common + # vng-api-common + # zgw-consumers idna==3.4 # via requests imagesize==1.4.1 @@ -92,42 +125,52 @@ importlib-metadata==4.12.0 # markdown # sphinx inflection==0.5.1 - # via drf-yasg + # via drf-spectacular iso-639==0.4.5 # via vng-api-common isodate==0.6.1 # via vng-api-common -itypes==1.2.0 - # via coreapi jinja2==3.1.2 - # via - # coreschema - # sphinx + # via sphinx +jsonschema==4.16.0 + # via drf-spectacular markdown==3.4.1 # via -r requirements/base.in markupsafe==2.1.1 # via jinja2 +notifications-api-common==0.1.0 + # via vng-api-common oyaml==1.0 # via vng-api-common packaging==21.3 # via - # drf-yasg # redis # sphinx pillow==9.2.0 # via -r requirements/base.in psycopg2-binary==2.9.3 # via -r requirements/base.in +pycparser==2.21 + # via cffi pygments==2.13.0 # via sphinx pyjwt==2.5.0 # via # gemma-zds-client # vng-api-common +pyopenssl==22.1.0 + # via + # django-simple-certmanager + # zgw-consumers pyparsing==3.0.9 # via packaging +pyrsistent==0.18.1 + # via jsonschema python-dateutil==2.8.2 - # via -r requirements/base.in + # via + # -r requirements/base.in + # django-relativedelta + # faker python-dotenv==0.21.0 # via -r requirements/base.in pytz==2022.2.1 @@ -135,9 +178,9 @@ pytz==2022.2.1 # -r requirements/base.in # babel # django - # drf-yasg pyyaml==6.0 # via + # drf-spectacular # gemma-zds-client # oyaml # vng-api-common @@ -147,19 +190,19 @@ redis==4.3.4 # via django-redis requests==2.28.1 # via - # coreapi # gemma-zds-client + # requests-mock # sphinx # vng-api-common -ruamel-yaml==0.17.21 - # via drf-yasg -ruamel-yaml-clib==0.2.6 - # via ruamel-yaml + # zgw-consumers +requests-mock==1.10.0 + # via zgw-consumers six==1.16.0 # via # django-markup # isodate # python-dateutil + # requests-mock snowballstemmer==2.2.0 # via sphinx sphinx==5.2.2 @@ -183,15 +226,15 @@ sphinxcontrib-serializinghtml==1.1.5 sqlparse==0.4.3 # via django uritemplate==4.1.1 - # via - # coreapi - # drf-yasg + # via drf-spectacular urllib3==1.26.12 # via requests -vng-api-common==1.8.0 +vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade # via -r requirements/base.in wrapt==1.14.1 # via deprecated +zgw-consumers==0.21.2 + # via notifications-api-common zipp==3.8.1 # via importlib-metadata diff --git a/requirements/ci.txt b/requirements/ci.txt index e3ddd73..cd6d531 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -18,6 +18,10 @@ async-timeout==4.0.2 # via # -r requirements/base.txt # redis +attrs==22.1.0 + # via + # -r requirements/base.txt + # jsonschema babel==2.10.3 # via # -r requirements/base.txt @@ -27,24 +31,29 @@ black==22.3.0 certifi==2022.9.24 # via # -r requirements/base.txt + # django-simple-certmanager # requests +cffi==1.15.1 + # via + # -r requirements/base.txt + # cryptography charset-normalizer==2.1.1 # via # -r requirements/base.txt # requests click==8.1.3 # via black -coreapi==2.3.3 +coverage==6.5.0 + # via -r requirements/testing.in +cryptography==38.0.1 # via # -r requirements/base.txt - # drf-yasg -coreschema==0.0.4 + # cryptograpy + # pyopenssl +cryptograpy==0.0.0 # via # -r requirements/base.txt - # coreapi - # drf-yasg -coverage==6.5.0 - # via -r requirements/testing.in + # django-simple-certmanager deprecated==1.2.13 # via # -r requirements/base.txt @@ -58,13 +67,19 @@ django==3.2.15 # django-filter # django-jenkins # django-markup + # django-privates # django-redis + # django-relativedelta # django-rest-framework-condition + # django-sendfile2 + # django-simple-certmanager # django-solo # djangorestframework # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common + # zgw-consumers django-axes==5.39.0 # via -r requirements/base.txt django-capture-on-commit-callbacks==1.11.0 @@ -72,7 +87,9 @@ django-capture-on-commit-callbacks==1.11.0 django-choices==1.7.0 # via # -r requirements/base.txt + # django-simple-certmanager # vng-api-common + # zgw-consumers django-cors-middleware==1.5.0 # via -r requirements/base.txt django-filter==21.1 @@ -87,27 +104,47 @@ django-jenkins==0.110.0 # via -r requirements/ci.in django-markup==1.3 # via -r requirements/base.txt +django-privates==1.4.0 + # via + # -r requirements/base.txt + # django-simple-certmanager django-redis==5.2.0 # via -r requirements/base.txt +django-relativedelta==1.1.2 + # via + # -r requirements/base.txt + # zgw-consumers django-rest-framework-condition==0.1.1 # via # -r requirements/base.txt # vng-api-common +django-sendfile2==0.7.0 + # via + # -r requirements/base.txt + # django-privates +django-simple-certmanager==1.1.0 + # via + # -r requirements/base.txt + # zgw-consumers django-solo==2.0.0 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common + # zgw-consumers django-utils-six==2.0 # via -r requirements/base.txt djangorestframework==3.12.4 # via # -r requirements/base.txt # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common djangorestframework-camel-case==1.3.0 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common docutils==0.17.1 # via @@ -118,20 +155,25 @@ drf-nested-routers==0.93.4 # via # -r requirements/base.txt # vng-api-common -drf-yasg==1.21.4 +drf-spectacular==0.24.2 # via # -r requirements/base.txt # vng-api-common factory-boy==3.0.1 # via -r requirements/testing.in -faker==15.0.0 - # via factory-boy +faker==15.1.1 + # via + # -r requirements/base.txt + # factory-boy + # zgw-consumers freezegun==1.2.2 # via -r requirements/testing.in gemma-zds-client==1.0.1 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common + # zgw-consumers idna==3.4 # via # -r requirements/base.txt @@ -148,7 +190,7 @@ importlib-metadata==4.12.0 inflection==0.5.1 # via # -r requirements/base.txt - # drf-yasg + # drf-spectacular iso-639==0.4.5 # via # -r requirements/base.txt @@ -161,15 +203,14 @@ isort==5.10.1 # via # -r requirements/testing.in # pylint -itypes==1.2.0 - # via - # -r requirements/base.txt - # coreapi jinja2==3.1.2 # via # -r requirements/base.txt - # coreschema # sphinx +jsonschema==4.16.0 + # via + # -r requirements/base.txt + # drf-spectacular lazy-object-proxy==1.7.1 # via astroid markdown==3.4.1 @@ -182,6 +223,10 @@ mccabe==0.7.0 # via pylint mypy-extensions==0.4.3 # via black +notifications-api-common==0.1.0 + # via + # -r requirements/base.txt + # vng-api-common oyaml==1.0 # via # -r requirements/base.txt @@ -189,7 +234,6 @@ oyaml==1.0 packaging==21.3 # via # -r requirements/base.txt - # drf-yasg # redis # sphinx pathspec==0.10.1 @@ -202,6 +246,10 @@ platformdirs==2.5.2 # via black psycopg2-binary==2.9.3 # via -r requirements/base.txt +pycparser==2.21 + # via + # -r requirements/base.txt + # cffi pygments==2.13.0 # via # -r requirements/base.txt @@ -213,13 +261,23 @@ pyjwt==2.5.0 # vng-api-common pylint==1.9.4 # via -r requirements/testing.in +pyopenssl==22.1.0 + # via + # -r requirements/base.txt + # django-simple-certmanager + # zgw-consumers pyparsing==3.0.9 # via # -r requirements/base.txt # packaging +pyrsistent==0.18.1 + # via + # -r requirements/base.txt + # jsonschema python-dateutil==2.8.2 # via # -r requirements/base.txt + # django-relativedelta # faker # freezegun python-dotenv==0.21.0 @@ -229,10 +287,10 @@ pytz==2022.2.1 # -r requirements/base.txt # babel # django - # drf-yasg pyyaml==6.0 # via # -r requirements/base.txt + # drf-spectacular # gemma-zds-client # oyaml # vng-api-common @@ -245,21 +303,16 @@ redis==4.3.4 requests==2.28.1 # via # -r requirements/base.txt - # coreapi # gemma-zds-client # requests-mock # sphinx # vng-api-common + # zgw-consumers requests-mock==1.10.0 - # via -r requirements/testing.in -ruamel-yaml==0.17.21 # via # -r requirements/base.txt - # drf-yasg -ruamel-yaml-clib==0.2.6 - # via - # -r requirements/base.txt - # ruamel-yaml + # -r requirements/testing.in + # zgw-consumers six==1.16.0 # via # -r requirements/base.txt @@ -316,19 +369,22 @@ typing-extensions==4.3.0 uritemplate==4.1.1 # via # -r requirements/base.txt - # coreapi - # drf-yasg + # drf-spectacular urllib3==1.26.12 # via # -r requirements/base.txt # requests -vng-api-common==1.8.0 +vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade # via -r requirements/base.txt wrapt==1.14.1 # via # -r requirements/base.txt # astroid # deprecated +zgw-consumers==0.21.2 + # via + # -r requirements/base.txt + # notifications-api-common zipp==3.8.1 # via # -r requirements/base.txt diff --git a/requirements/dev.txt b/requirements/dev.txt index f78d26d..913696f 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -18,6 +18,10 @@ async-timeout==4.0.2 # via # -r requirements/base.txt # redis +attrs==22.1.0 + # via + # -r requirements/base.txt + # jsonschema babel==2.10.3 # via # -r requirements/base.txt @@ -27,24 +31,29 @@ black==22.3.0 certifi==2022.9.24 # via # -r requirements/base.txt + # django-simple-certmanager # requests +cffi==1.15.1 + # via + # -r requirements/base.txt + # cryptography charset-normalizer==2.1.1 # via # -r requirements/base.txt # requests click==8.1.3 # via black -coreapi==2.3.3 +coverage==6.4.4 + # via -r requirements/testing.in +cryptography==38.0.1 # via # -r requirements/base.txt - # drf-yasg -coreschema==0.0.4 + # cryptograpy + # pyopenssl +cryptograpy==0.0.0 # via # -r requirements/base.txt - # coreapi - # drf-yasg -coverage==6.4.4 - # via -r requirements/testing.in + # django-simple-certmanager deprecated==1.2.13 # via # -r requirements/base.txt @@ -58,13 +67,19 @@ django==3.2.15 # django-debug-toolbar # django-filter # django-markup + # django-privates # django-redis + # django-relativedelta # django-rest-framework-condition + # django-sendfile2 + # django-simple-certmanager # django-solo # djangorestframework # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common + # zgw-consumers django-axes==5.39.0 # via -r requirements/base.txt django-capture-on-commit-callbacks==1.11.0 @@ -72,7 +87,9 @@ django-capture-on-commit-callbacks==1.11.0 django-choices==1.7.0 # via # -r requirements/base.txt + # django-simple-certmanager # vng-api-common + # zgw-consumers django-cors-middleware==1.5.0 # via -r requirements/base.txt django-debug-toolbar==3.5.0 @@ -87,27 +104,47 @@ django-ipware==4.0.2 # django-axes django-markup==1.3 # via -r requirements/base.txt +django-privates==1.4.0 + # via + # -r requirements/base.txt + # django-simple-certmanager django-redis==5.2.0 # via -r requirements/base.txt +django-relativedelta==1.1.2 + # via + # -r requirements/base.txt + # zgw-consumers django-rest-framework-condition==0.1.1 # via # -r requirements/base.txt # vng-api-common +django-sendfile2==0.7.0 + # via + # -r requirements/base.txt + # django-privates +django-simple-certmanager==1.1.0 + # via + # -r requirements/base.txt + # zgw-consumers django-solo==2.0.0 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common + # zgw-consumers django-utils-six==2.0 # via -r requirements/base.txt djangorestframework==3.12.4 # via # -r requirements/base.txt # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common djangorestframework-camel-case==1.3.0 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common docutils==0.17.1 # via @@ -118,20 +155,25 @@ drf-nested-routers==0.93.4 # via # -r requirements/base.txt # vng-api-common -drf-yasg==1.21.4 +drf-spectacular==0.24.2 # via # -r requirements/base.txt # vng-api-common factory-boy==3.0.1 # via -r requirements/testing.in -faker==15.0.0 - # via factory-boy +faker==15.1.1 + # via + # -r requirements/base.txt + # factory-boy + # zgw-consumers freezegun==1.2.2 # via -r requirements/testing.in gemma-zds-client==1.0.1 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common + # zgw-consumers idna==3.4 # via # -r requirements/base.txt @@ -148,7 +190,7 @@ importlib-metadata==4.12.0 inflection==0.5.1 # via # -r requirements/base.txt - # drf-yasg + # drf-spectacular iso-639==0.4.5 # via # -r requirements/base.txt @@ -161,15 +203,14 @@ isort==5.10.1 # via # -r requirements/testing.in # pylint -itypes==1.2.0 - # via - # -r requirements/base.txt - # coreapi jinja2==3.1.2 # via # -r requirements/base.txt - # coreschema # sphinx +jsonschema==4.16.0 + # via + # -r requirements/base.txt + # drf-spectacular lazy-object-proxy==1.7.1 # via astroid markdown==3.4.1 @@ -182,6 +223,10 @@ mccabe==0.7.0 # via pylint mypy-extensions==0.4.3 # via black +notifications-api-common==0.1.0 + # via + # -r requirements/base.txt + # vng-api-common oyaml==1.0 # via # -r requirements/base.txt @@ -189,7 +234,6 @@ oyaml==1.0 packaging==21.3 # via # -r requirements/base.txt - # drf-yasg # redis # sphinx pathspec==0.9.0 @@ -202,6 +246,10 @@ platformdirs==2.5.2 # via black psycopg2-binary==2.9.3 # via -r requirements/base.txt +pycparser==2.21 + # via + # -r requirements/base.txt + # cffi pygments==2.13.0 # via # -r requirements/base.txt @@ -213,13 +261,23 @@ pyjwt==2.5.0 # vng-api-common pylint==1.9.4 # via -r requirements/testing.in +pyopenssl==22.1.0 + # via + # -r requirements/base.txt + # django-simple-certmanager + # zgw-consumers pyparsing==3.0.9 # via # -r requirements/base.txt # packaging +pyrsistent==0.18.1 + # via + # -r requirements/base.txt + # jsonschema python-dateutil==2.8.2 # via # -r requirements/base.txt + # django-relativedelta # faker # freezegun python-dotenv==0.21.0 @@ -229,10 +287,10 @@ pytz==2022.2.1 # -r requirements/base.txt # babel # django - # drf-yasg pyyaml==6.0 # via # -r requirements/base.txt + # drf-spectacular # gemma-zds-client # oyaml # vng-api-common @@ -245,21 +303,16 @@ redis==4.3.4 requests==2.28.1 # via # -r requirements/base.txt - # coreapi # gemma-zds-client # requests-mock # sphinx # vng-api-common + # zgw-consumers requests-mock==1.10.0 - # via -r requirements/testing.in -ruamel-yaml==0.17.21 # via # -r requirements/base.txt - # drf-yasg -ruamel-yaml-clib==0.2.6 - # via - # -r requirements/base.txt - # ruamel-yaml + # -r requirements/testing.in + # zgw-consumers six==1.16.0 # via # -r requirements/base.txt @@ -317,19 +370,22 @@ typing-extensions==4.3.0 uritemplate==4.1.1 # via # -r requirements/base.txt - # coreapi - # drf-yasg + # drf-spectacular urllib3==1.26.12 # via # -r requirements/base.txt # requests -vng-api-common==1.8.0 +vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade # via -r requirements/base.txt wrapt==1.14.1 # via # -r requirements/base.txt # astroid # deprecated +zgw-consumers==0.21.2 + # via + # -r requirements/base.txt + # notifications-api-common zipp==3.8.1 # via # -r requirements/base.txt diff --git a/requirements/production.txt b/requirements/production.txt index 077f57c..995b43b 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -16,6 +16,10 @@ async-timeout==4.0.2 # via # -r requirements/base.txt # redis +attrs==22.1.0 + # via + # -r requirements/base.txt + # jsonschema babel==2.10.3 # via # -r requirements/base.txt @@ -23,20 +27,25 @@ babel==2.10.3 certifi==2022.9.24 # via # -r requirements/base.txt + # django-simple-certmanager # requests +cffi==1.15.1 + # via + # -r requirements/base.txt + # cryptography charset-normalizer==2.1.1 # via # -r requirements/base.txt # requests -coreapi==2.3.3 +cryptography==38.0.1 # via # -r requirements/base.txt - # drf-yasg -coreschema==0.0.4 + # cryptograpy + # pyopenssl +cryptograpy==0.0.0 # via # -r requirements/base.txt - # coreapi - # drf-yasg + # django-simple-certmanager deprecated==1.2.13 # via # -r requirements/base.txt @@ -49,13 +58,19 @@ django==3.2.15 # django-choices # django-filter # django-markup + # django-privates # django-redis + # django-relativedelta # django-rest-framework-condition + # django-sendfile2 + # django-simple-certmanager # django-solo # djangorestframework # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common + # zgw-consumers django-axes==5.39.0 # via -r requirements/base.txt django-capture-on-commit-callbacks==1.11.0 @@ -63,7 +78,9 @@ django-capture-on-commit-callbacks==1.11.0 django-choices==1.7.0 # via # -r requirements/base.txt + # django-simple-certmanager # vng-api-common + # zgw-consumers django-cors-middleware==1.5.0 # via -r requirements/base.txt django-filter==21.1 @@ -76,27 +93,47 @@ django-ipware==4.0.2 # django-axes django-markup==1.3 # via -r requirements/base.txt +django-privates==1.4.0 + # via + # -r requirements/base.txt + # django-simple-certmanager django-redis==5.2.0 # via -r requirements/base.txt +django-relativedelta==1.1.2 + # via + # -r requirements/base.txt + # zgw-consumers django-rest-framework-condition==0.1.1 # via # -r requirements/base.txt # vng-api-common +django-sendfile2==0.7.0 + # via + # -r requirements/base.txt + # django-privates +django-simple-certmanager==1.1.0 + # via + # -r requirements/base.txt + # zgw-consumers django-solo==2.0.0 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common + # zgw-consumers django-utils-six==2.0 # via -r requirements/base.txt djangorestframework==3.12.4 # via # -r requirements/base.txt # drf-nested-routers - # drf-yasg + # drf-spectacular + # notifications-api-common # vng-api-common djangorestframework-camel-case==1.3.0 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common docutils==0.17.1 # via @@ -107,14 +144,20 @@ drf-nested-routers==0.93.4 # via # -r requirements/base.txt # vng-api-common -drf-yasg==1.21.4 +drf-spectacular==0.24.2 # via # -r requirements/base.txt # vng-api-common +faker==15.1.1 + # via + # -r requirements/base.txt + # zgw-consumers gemma-zds-client==1.0.1 # via # -r requirements/base.txt + # notifications-api-common # vng-api-common + # zgw-consumers idna==3.4 # via # -r requirements/base.txt @@ -131,7 +174,7 @@ importlib-metadata==4.12.0 inflection==0.5.1 # via # -r requirements/base.txt - # drf-yasg + # drf-spectacular iso-639==0.4.5 # via # -r requirements/base.txt @@ -140,21 +183,24 @@ isodate==0.6.1 # via # -r requirements/base.txt # vng-api-common -itypes==1.2.0 - # via - # -r requirements/base.txt - # coreapi jinja2==3.1.2 # via # -r requirements/base.txt - # coreschema # sphinx +jsonschema==4.16.0 + # via + # -r requirements/base.txt + # drf-spectacular markdown==3.4.1 # via -r requirements/base.txt markupsafe==2.1.1 # via # -r requirements/base.txt # jinja2 +notifications-api-common==0.1.0 + # via + # -r requirements/base.txt + # vng-api-common oyaml==1.0 # via # -r requirements/base.txt @@ -162,13 +208,16 @@ oyaml==1.0 packaging==21.3 # via # -r requirements/base.txt - # drf-yasg # redis # sphinx pillow==9.2.0 # via -r requirements/base.txt psycopg2-binary==2.9.3 # via -r requirements/base.txt +pycparser==2.21 + # via + # -r requirements/base.txt + # cffi pygments==2.13.0 # via # -r requirements/base.txt @@ -178,12 +227,24 @@ pyjwt==2.5.0 # -r requirements/base.txt # gemma-zds-client # vng-api-common +pyopenssl==22.1.0 + # via + # -r requirements/base.txt + # django-simple-certmanager + # zgw-consumers pyparsing==3.0.9 # via # -r requirements/base.txt # packaging +pyrsistent==0.18.1 + # via + # -r requirements/base.txt + # jsonschema python-dateutil==2.8.2 - # via -r requirements/base.txt + # via + # -r requirements/base.txt + # django-relativedelta + # faker python-dotenv==0.21.0 # via -r requirements/base.txt pytz==2022.2.1 @@ -191,10 +252,10 @@ pytz==2022.2.1 # -r requirements/base.txt # babel # django - # drf-yasg pyyaml==6.0 # via # -r requirements/base.txt + # drf-spectacular # gemma-zds-client # oyaml # vng-api-common @@ -207,24 +268,22 @@ redis==4.3.4 requests==2.28.1 # via # -r requirements/base.txt - # coreapi # gemma-zds-client + # requests-mock # sphinx # vng-api-common -ruamel-yaml==0.17.21 + # zgw-consumers +requests-mock==1.10.0 # via # -r requirements/base.txt - # drf-yasg -ruamel-yaml-clib==0.2.6 - # via - # -r requirements/base.txt - # ruamel-yaml + # zgw-consumers six==1.16.0 # via # -r requirements/base.txt # django-markup # isodate # python-dateutil + # requests-mock snowballstemmer==2.2.0 # via # -r requirements/base.txt @@ -266,20 +325,23 @@ sqlparse==0.4.3 uritemplate==4.1.1 # via # -r requirements/base.txt - # coreapi - # drf-yasg + # drf-spectacular urllib3==1.26.12 # via # -r requirements/base.txt # requests uwsgi==2.0.20 # via -r requirements/production.in -vng-api-common==1.8.0 +vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade # via -r requirements/base.txt wrapt==1.14.1 # via # -r requirements/base.txt # deprecated +zgw-consumers==0.21.2 + # via + # -r requirements/base.txt + # notifications-api-common zipp==3.8.1 # via # -r requirements/base.txt diff --git a/src/brc/api/kanalen.py b/src/brc/api/kanalen.py index 8c48cb9..bc9b319 100644 --- a/src/brc/api/kanalen.py +++ b/src/brc/api/kanalen.py @@ -1,6 +1,6 @@ from django.conf import settings -from vng_api_common.notifications.kanalen import Kanaal +from notifications_api_common.kanalen import Kanaal from brc.datamodel.models import Besluit diff --git a/src/brc/api/schema.py b/src/brc/api/schema.py index 54b5d1a..ea9b328 100644 --- a/src/brc/api/schema.py +++ b/src/brc/api/schema.py @@ -1,11 +1,18 @@ from django.conf import settings -from drf_yasg import openapi -from vng_api_common.notifications.utils import notification_documentation +from notifications_api_common.utils import notification_documentation from .kanalen import KANAAL_BESLUITEN -description = f"""Een API om een besluitregistratiecomponent (BRC) te benaderen. +__all__ = [ + "TITLE", + "DESCRIPTION", + "CONTACT", + "LICENSE", + "VERSION", +] +TITLE = f"{settings.PROJECT_NAME} API" +DESCRIPTION = f"""Een API om een besluitregistratiecomponent (BRC) te benaderen. Een BESLUIT wordt veelal schriftelijk vastgelegd maar dit is niet noodzakelijk. Omgekeerd kan het voorkomen dat in een INFORMATIEOBJECT meerdere @@ -44,14 +51,9 @@ * [Zaakgericht werken]({settings.DOCUMENTATION_URL}) """ -info = openapi.Info( - title=f"{settings.PROJECT_NAME} API", - default_version=settings.API_VERSION, - description=description, - contact=openapi.Contact( - email="standaarden.ondersteuning@vng.nl", url=settings.DOCUMENTATION_URL - ), - license=openapi.License( - name="EUPL 1.2", url="https://opensource.org/licenses/EUPL-1.2" - ), -) +CONTACT = { + "email": "standaarden.ondersteuning@vng.nl", + "url": settings.DOCUMENTATION_URL, +} +LICENSE = {"name": "EUPL 1.2", "url": "https://opensource.org/licenses/EUPL-1.2"} +VERSION = settings.API_VERSION diff --git a/src/brc/api/urls.py b/src/brc/api/urls.py index 6d80a0f..253e4f5 100644 --- a/src/brc/api/urls.py +++ b/src/brc/api/urls.py @@ -2,7 +2,7 @@ from django.urls import include, path from vng_api_common import routers -from vng_api_common.schema import SchemaView +from vng_api_common.views import SchemaViewAPI, SchemaViewRedoc from .viewsets import ( BesluitAuditTrailViewSet, @@ -27,13 +27,13 @@ [ # API documentation url( - r"^schema/openapi(?P\.json|\.yaml)$", - SchemaView.without_ui(cache_timeout=None), - name="schema-json", + r"^schema/openapi.yaml", + SchemaViewAPI.as_view(), + name="schema", ), url( - r"^schema/$", - SchemaView.with_ui("redoc", cache_timeout=None), + r"^schema/", + SchemaViewRedoc.as_view(url_name="schema-redoc"), name="schema-redoc", ), # actual API diff --git a/src/brc/api/viewsets.py b/src/brc/api/viewsets.py index feb455a..78627f9 100644 --- a/src/brc/api/viewsets.py +++ b/src/brc/api/viewsets.py @@ -1,5 +1,13 @@ from django.core.cache import caches +from django.utils.translation import gettext as _ +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import OpenApiParameter, extend_schema, extend_schema_view +from notifications_api_common.viewsets import ( + NotificationCreateMixin, + NotificationDestroyMixin, + NotificationViewSetMixin, +) from rest_framework import mixins, viewsets from rest_framework.pagination import PageNumberPagination from vng_api_common.audittrails.viewsets import ( @@ -8,11 +16,6 @@ AuditTrailViewSet, AuditTrailViewsetMixin, ) -from vng_api_common.notifications.viewsets import ( - NotificationCreateMixin, - NotificationDestroyMixin, - NotificationViewSetMixin, -) from vng_api_common.viewsets import CheckQueryParamsMixin from brc.datamodel.models import Besluit, BesluitInformatieObject @@ -31,6 +34,69 @@ from .serializers import BesluitInformatieObjectSerializer, BesluitSerializer +@extend_schema_view( + list=extend_schema( + summary=_("Alle BESLUITen opvragen."), + description=_("Deze lijst kan gefilterd wordt met query-string parameters."), + ), + retrieve=extend_schema( + summary=_("Een specifiek BESLUIT opvragen."), + description=_("Een specifiek BESLUIT opvragen."), + ), + create=extend_schema( + summary=_("Maak een BESLUIT aan."), + description=_( + "Indien geen identificatie gegeven is, dan wordt deze automatischgegenereerd." + " Er wordt gevalideerd op:\n" + "- uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`\n" + "- geldigheid `verantwoorlijkeOrganisatie` RSIN\n" + " - geldigheid `besluittype` URL - de resource moet opgevraagd kunnen\n" + " worden uit de Catalogi API en de vorm van een BESLUITTYPE hebben.\n" + "- geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden\n" + " uit de Zaken API en de vorm van een ZAAK hebben.\n" + "- `datum` in het verleden of nu\n" + "- publicatie `besluittype` \n" + "- `concept` moet `false` zijn \n" + ), + ), + update=extend_schema( + summary=_("Werk een BESLUIT in zijn geheel bij."), + description=_( + "Er wordt gevalideerd op: \n" + "- uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`\n" + "- geldigheid `verantwoorlijkeOrganisatie` RSIN\n" + " - het `besluittype` mag niet gewijzigd worden\n" + " - geldigheid `zaak` URL \n" + "- de resource moet opgevraagd kunnen worden\n" + "uit de Zaken API en de vorm van een ZAAK hebben." + "- `datum` in het verleden of nu\n" + "- publicatie `besluittype` - `concept` moet `false` zijn\n" + ), + ), + partial_update=extend_schema( + summary=_("Werk een BESLUIT deels bij."), + description=_( + "Er wordt gevalideerd op:\n" + " - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`\n" + " - geldigheid `verantwoorlijkeOrganisatie` RSIN\n" + "- het `besluittype` mag niet gewijzigd worden\n" + "- geldigheid `zaak` URL \n" + "- de resource moet opgevraagd kunnen worden" + " uit de Zaken API en de vorm van een ZAAK hebben.\n" + " - `datum` in het verleden of nu\n" + " - publicatie `besluittype` - `concept` moet `false` zijn\n" + ), + ), + destroy=extend_schema( + summary=_("Verwijder een BESLUIT."), + description=_( + " Verwijder een BESLUIT samen met alle gerelateerde resources binnen deze API." + " **De gerelateerde resources zijn** \n" + "- `BESLUITINFORMATIEOBJECT`\n" + "- audit trail regels" + ), + ), +) class BesluitViewSet( NotificationViewSetMixin, CheckQueryParamsMixin, @@ -38,69 +104,6 @@ class BesluitViewSet( ListFilterByAuthorizationsMixin, viewsets.ModelViewSet, ): - """ - Opvragen en bewerken van BESLUITen. - - create: - Maak een BESLUIT aan. - - Indien geen identificatie gegeven is, dan wordt deze automatisch - gegenereerd. - - Er wordt gevalideerd op: - - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie` - - geldigheid `verantwoorlijkeOrganisatie` RSIN - - geldigheid `besluittype` URL - de resource moet opgevraagd kunnen - worden uit de Catalogi API en de vorm van een BESLUITTYPE hebben. - - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden - uit de Zaken API en de vorm van een ZAAK hebben. - - `datum` in het verleden of nu - - publicatie `besluittype` - `concept` moet `false` zijn - - list: - Alle BESLUITen opvragen. - - Deze lijst kan gefilterd wordt met query-string parameters. - - retrieve: - Een specifiek BESLUIT opvragen. - - Een specifiek BESLUIT opvragen. - - update: - Werk een BESLUIT in zijn geheel bij. - - Er wordt gevalideerd op: - - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie` - - geldigheid `verantwoorlijkeOrganisatie` RSIN - - het `besluittype` mag niet gewijzigd worden - - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden - uit de Zaken API en de vorm van een ZAAK hebben. - - `datum` in het verleden of nu - - publicatie `besluittype` - `concept` moet `false` zijn - - partial_update: - Werk een BESLUIT deels bij. - - Er wordt gevalideerd op: - - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie` - - geldigheid `verantwoorlijkeOrganisatie` RSIN - - het `besluittype` mag niet gewijzigd worden - - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden - uit de Zaken API en de vorm van een ZAAK hebben. - - `datum` in het verleden of nu - - publicatie `besluittype` - `concept` moet `false` zijn - - destroy: - Verwijder een BESLUIT. - - Verwijder een BESLUIT samen met alle gerelateerde resources binnen deze API. - - **De gerelateerde resources zijn** - - `BESLUITINFORMATIEOBJECT` - - audit trail regels - """ - queryset = Besluit.objects.all().order_by("-pk") serializer_class = BesluitSerializer filter_class = BesluitFilter @@ -117,8 +120,59 @@ class BesluitViewSet( } notifications_kanaal = KANAAL_BESLUITEN audit = AUDIT_BRC - - + global_description = _("Opvragen en bewerken van BESLUITen.") + + +@extend_schema_view( + list=extend_schema( + summary=_("Alle BESLUIT-INFORMATIEOBJECT relaties opvragen."), + description=_("Deze lijst kan gefilterd wordt met query-string parameters."), + ), + retrieve=extend_schema( + summary=_("Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen."), + description=_("Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen."), + ), + create=extend_schema( + summary=_("Maak een BESLUIT-INFORMATIEOBJECT relatie aan."), + description=_( + " Registreer een INFORMATIEOBJECT bij een BESLUIT. " + "Er worden twee types van relaties met andere objecten gerealiseerd:\n" + "**Er wordt gevalideerd op**" + " - geldigheid `besluit` URL\n" + " - geldigheid `informatieobject` URL\n" + "- de combinatie `informatieobject` en `besluit` moet uniek zijn\n" + " - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn" + " aan `besluit.besluittype`\n" + "**Opmerkingen**" + " - De `registratiedatum` wordt door het systeem op 'NU' gezet. De" + " `aardRelatie` wordt ook door het systeem gezet.\n" + " - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie" + " aangemaakt, echter zonder de relatie-informatie.\n" + ), + ), + update=extend_schema( + summary=_("Werk een BESLUIT-INFORMATIEOBJECT relatie in zijn geheel bij."), + description=_( + "Je mag enkel de gegevens van de relatie bewerken, en niet de relatie zelf" + "aanpassen.\n" + " **Er wordt gevalideerd op**" + " - `informatieobject` URL en `besluit` URL mogen niet veranderen" + ), + ), + partial_update=extend_schema( + summary=_("Werk een BESLUIT-INFORMATIEOBJECT relatie deels bij."), + description=_( + "Je mag enkel de gegevens van de relatie bewerken, en niet de relatie zelf" + "aanpassen.\n" + "**Er wordt gevalideerd op**" + "- `informatieobject` URL en `besluit` URL mogen niet veranderen" + ), + ), + destroy=extend_schema( + summary=_("Verwijder een BESLUIT-INFORMATIEOBJECT relatie."), + description=_("Verwijder een BESLUIT-INFORMATIEOBJECT relatie."), + ), +) class BesluitInformatieObjectViewSet( NotificationCreateMixin, NotificationDestroyMixin, @@ -130,62 +184,6 @@ class BesluitInformatieObjectViewSet( mixins.DestroyModelMixin, viewsets.ReadOnlyModelViewSet, ): - """ - Opvragen en bewerken van BESLUIT-INFORMATIEOBJECT relaties. - - create: - Maak een BESLUIT-INFORMATIEOBJECT relatie aan. - - Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee types van - relaties met andere objecten gerealiseerd: - - **Er wordt gevalideerd op** - - geldigheid `besluit` URL - - geldigheid `informatieobject` URL - - de combinatie `informatieobject` en `besluit` moet uniek zijn - - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn - aan `besluit.besluittype` - - **Opmerkingen** - - De `registratiedatum` wordt door het systeem op 'NU' gezet. De - `aardRelatie` wordt ook door het systeem gezet. - - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie - aangemaakt, echter zonder de relatie-informatie. - - list: - Alle BESLUIT-INFORMATIEOBJECT relaties opvragen. - - Deze lijst kan gefilterd wordt met query-string parameters. - - retrieve: - Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. - - Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. - - update: - Werk een BESLUIT-INFORMATIEOBJECT relatie in zijn geheel bij. - - Je mag enkel de gegevens van de relatie bewerken, en niet de relatie zelf - aanpassen. - - **Er wordt gevalideerd op** - - `informatieobject` URL en `besluit` URL mogen niet veranderen - - partial_update: - Werk een BESLUIT-INFORMATIEOBJECT relatie deels bij. - - Je mag enkel de gegevens van de relatie bewerken, en niet de relatie zelf - aanpassen. - - **Er wordt gevalideerd op** - - `informatieobject` URL en `besluit` URL mogen niet veranderen - - destroy: - Verwijder een BESLUIT-INFORMATIEOBJECT relatie. - - Verwijder een BESLUIT-INFORMATIEOBJECT relatie. - """ - queryset = BesluitInformatieObject.objects.all() serializer_class = BesluitInformatieObjectSerializer filterset_class = BesluitInformatieObjectFilter @@ -202,6 +200,9 @@ class BesluitInformatieObjectViewSet( notifications_kanaal = KANAAL_BESLUITEN notifications_main_resource_key = "besluit" audit = AUDIT_BRC + global_description = _( + "Opvragen en bewerken van BESLUIT-INFORMATIEOBJECT relaties." + ) def get_queryset(self): qs = super().get_queryset() @@ -214,19 +215,33 @@ def get_queryset(self): return qs +@extend_schema( + parameters=[ + OpenApiParameter( + name="besluit_uuid", + type=OpenApiTypes.UUID, + location=OpenApiParameter.PATH, + description=_("Unieke resource identifier (UUID4)"), + required=True, + ) + ] +) +@extend_schema_view( + list=extend_schema( + summary=_("Alle audit trail regels behorend bij het BESLUIT."), + description=_("Alle audit trail regels behorend bij het BESLUIT."), + ), + retrieve=extend_schema( + summary=_("Een specifieke audit trail regel opvragen."), + description=_("Een specifieke audit trail regel opvragen."), + ), +) class BesluitAuditTrailViewSet(AuditTrailViewSet): - """ - Opvragen van de audit trail regels. - - list: - Alle audit trail regels behorend bij het BESLUIT. - - Alle audit trail regels behorend bij het BESLUIT. - - retrieve: - Een specifieke audit trail regel opvragen. - - Een specifieke audit trail regel opvragen. - """ - main_resource_lookup_field = "besluit_uuid" + global_description = _("Opvragen van de audit trail regels.") + + def initialize_request(self, request, *args, **kwargs): + # workaround for drf-nested-viewset injecting the URL kwarg into request.data + return super(viewsets.ReadOnlyModelViewSet, self).initialize_request( + request, *args, **kwargs + ) diff --git a/src/brc/conf/api.py b/src/brc/conf/api.py index 0bfb63a..dd0bb23 100644 --- a/src/brc/conf/api.py +++ b/src/brc/conf/api.py @@ -7,26 +7,14 @@ REST_FRAMEWORK = BASE_REST_FRAMEWORK.copy() REST_FRAMEWORK["PAGE_SIZE"] = 100 -SECURITY_DEFINITION_NAME = "JWT-Claims" +DOCUMENTATION_INFO_MODULE = "brc.api.schema" -SWAGGER_SETTINGS = BASE_SWAGGER_SETTINGS.copy() -SWAGGER_SETTINGS.update( +SPECTACULAR_SETTINGS = BASE_SPECTACULAR_SETTINGS.copy() +SPECTACULAR_SETTINGS.update( { - "DEFAULT_INFO": "brc.api.schema.info", - "SECURITY_DEFINITIONS": { - SECURITY_DEFINITION_NAME: { - # OAS 3.0 - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - # not official... - # 'scopes': {}, # TODO: set up registry that's filled in later... - # Swagger 2.0 - # 'name': 'Authorization', - # 'in': 'header' - # 'type': 'apiKey', - } - }, + "SERVERS": [{"url": "https://besluiten-api.test.vng.cloud/api/v1"}], + # todo remove this line below when deploying to production + "SORT_OPERATION_PARAMETERS": False, } ) diff --git a/src/brc/conf/base.py b/src/brc/conf/base.py index 97200a9..06897aa 100644 --- a/src/brc/conf/base.py +++ b/src/brc/conf/base.py @@ -58,14 +58,17 @@ "axes", "django_filters", "corsheaders", - "vng_api_common", # before drf_yasg to override the management command + "vng_api_common", # before drf_spectacular to override the management command "vng_api_common.notifications", "vng_api_common.authorizations", "vng_api_common.audittrails", - "drf_yasg", + "drf_spectacular", "rest_framework", "django_markup", "solo", + "simple_certmanager", + "zgw_consumers", + "notifications_api_common", # Project applications. "brc.accounts", "brc.api", diff --git a/src/brc/urls.py b/src/brc/urls.py index 5ed325e..5444aae 100644 --- a/src/brc/urls.py +++ b/src/brc/urls.py @@ -15,7 +15,7 @@ # Simply show the index template. path("", TemplateView.as_view(template_name="index.html")), path("ref/", include("vng_api_common.urls")), - path("ref/", include("vng_api_common.notifications.urls")), + path("ref/", include("notifications_api_common.urls")), path("view-config/", ViewConfigView.as_view(), name="view-config"), ] diff --git a/src/openapi.yaml b/src/openapi.yaml index 5f8a0d6..4484100 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -1,149 +1,111 @@ -openapi: 3.0.0 +openapi: 3.0.3 info: title: Besluiten API - description: 'Een API om een besluitregistratiecomponent (BRC) te benaderen. - + version: 1.0.1 + description: | + Een API om een besluitregistratiecomponent (BRC) te benaderen. Een BESLUIT wordt veelal schriftelijk vastgelegd maar dit is niet - noodzakelijk. Omgekeerd kan het voorkomen dat in een INFORMATIEOBJECT meerdere - besluiten vastgelegd zijn. Vandaar de N:M-relatie naar INFORMATIEOBJECT. Een - besluit komt voort uit een zaak van de zaakbehandelende organisatie dan wel is - een besluit van een andere organisatie dat het onderwerp (object) is van een - zaak van de zaakbehandelende organisatie. BESLUIT heeft dan ook een optionele - relatie met de ZAAK waarvan het een uitkomst is. - De typering van BESLUITen is in de Catalogi API (ZTC) ondergebracht in de vorm - van BESLUITTYPEn. - **Afhankelijkheden** - Deze API is afhankelijk van: - * Catalogi API - * Notificaties API - * Documenten API *(optioneel)* - * Zaken API *(optioneel)* - * Autorisaties API *(optioneel)* - **Autorisatie** - Deze API vereist autorisatie. Je kan de - [token-tool](https://zaken-auth.vng.cloud/) gebruiken om JWT-tokens te - genereren. - ### Notificaties - Deze API publiceert notificaties op het kanaal `besluiten`. - **Main resource** - `besluit` - **Kenmerken** - - * `verantwoordelijke_organisatie`: Het RSIN van de niet-natuurlijk persoon zijnde - de organisatie die het besluit heeft vastgesteld. - + * `verantwoordelijke_organisatie`: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie die het besluit heeft vastgesteld. * `besluittype`: URL-referentie naar het BESLUITTYPE (in de Catalogi API). - **Resources en acties** - - `besluit`: create, update, destroy - - `besluitinformatieobject`: create, destroy - **Handige links** - * [Documentatie](https://vng-realisatie.github.io/gemma-zaken/standaard) - * [Zaakgericht werken](https://vng-realisatie.github.io/gemma-zaken) - - ' contact: - url: https://vng-realisatie.github.io/gemma-zaken email: standaarden.ondersteuning@vng.nl + url: https://vng-realisatie.github.io/gemma-zaken license: name: EUPL 1.2 url: https://opensource.org/licenses/EUPL-1.2 - version: 1.0.1 -security: -- JWT-Claims: [] paths: - /besluiten: + /api/v1/besluiten: get: operationId: besluit_list - summary: Alle BESLUITen opvragen. description: Deze lijst kan gefilterd wordt met query-string parameters. + summary: Alle BESLUITen opvragen. parameters: - name: identificatie - in: query - description: Identificatie van het besluit binnen de organisatie die het besluit - heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die gegenereerd. required: false + in: query + description: identificatie schema: type: string - - name: verantwoordelijkeOrganisatie - in: query - description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie - die het besluit heeft vastgesteld. + - name: verantwoordelijke_organisatie required: false + in: query + description: verantwoordelijke_organisatie schema: type: string - name: besluittype - in: query - description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). required: false + in: query + description: besluittype schema: type: string - format: uri - name: zaak - in: query - description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit - uitkomst is. required: false + in: query + description: zaak schema: type: string - format: uri - name: page + required: false in: query description: Een pagina binnen de gepagineerde set resultaten. - required: false schema: type: integer + tags: + - besluiten + security: + - JWT-Claims: + - besluiten.lezen responses: '200': - description: OK headers: API-version: schema: @@ -153,132 +115,33 @@ paths: content: application/json: schema: - required: - - count - - results - type: object - properties: - count: - type: integer - next: - type: string - format: uri - nullable: true - previous: - type: string - format: uri - nullable: true - results: - type: array - items: - $ref: '#/components/schemas/Besluit' + $ref: '#/components/schemas/PaginatedBesluitList' + description: OK '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - besluiten.lezen - post: - operationId: besluit_create - summary: Maak een BESLUIT aan. - description: "Indien geen identificatie gegeven is, dan wordt deze automatisch\n\ - gegenereerd.\n\nEr wordt gevalideerd op:\n- uniciteit van `verantwoorlijkeOrganisatie`\ - \ + `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n- geldigheid\ - \ `besluittype` URL - de resource moet opgevraagd kunnen\n worden uit de\ - \ Catalogi API en de vorm van een BESLUITTYPE hebben.\n- geldigheid `zaak`\ - \ URL - de resource moet opgevraagd kunnen worden\n uit de Zaken API en de\ - \ vorm van een ZAAK hebben.\n- `datum` in het verleden of nu\n- publicatie\ - \ `besluittype` - `concept` moet `false` zijn" - parameters: - - name: Content-Type - in: header - description: Content type van de verzoekinhoud. - required: true - schema: - type: string - enum: - - application/json - - name: X-NLX-Logrecord-ID - in: header - description: Identifier of the request, traceable throughout the network - required: false - schema: - type: string - - name: X-Audit-Toelichting - in: header - description: Toelichting waarom een bepaald verzoek wordt gedaan - required: false - schema: - type: string - requestBody: - $ref: '#/components/requestBodies/Besluit' - responses: - '201': - description: Created headers: API-version: schema: type: string description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' - Location: + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: schema: type: string - format: uri - description: URL waar de resource leeft. + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' content: application/json: schema: - $ref: '#/components/schemas/Besluit' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' + $ref: '#/components/schemas/Fout' + description: Unauthorized '403': - $ref: '#/components/responses/403' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - besluiten.aanmaken - parameters: [] - /besluiten/{besluit_uuid}/audittrail: - get: - operationId: audittrail_list - summary: Alle audit trail regels behorend bij het BESLUIT. - description: Alle audit trail regels behorend bij het BESLUIT. - responses: - '200': - description: OK headers: API-version: schema: @@ -288,46 +151,9 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/AuditTrail' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' + $ref: '#/components/schemas/Fout' + description: Forbidden '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - audittrails.lezen - parameters: - - name: besluit_uuid - in: path - required: true - description: Unieke resource identifier (UUID4) - schema: - type: string - format: uuid - /besluiten/{besluit_uuid}/audittrail/{uuid}: - get: - operationId: audittrail_read - summary: Een specifieke audit trail regel opvragen. - description: Een specifieke audit trail regel opvragen. - responses: - '200': - description: OK headers: API-version: schema: @@ -337,53 +163,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AuditTrail' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' + $ref: '#/components/schemas/Fout' + description: Not acceptable '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - audittrails.lezen - parameters: - - name: besluit_uuid - in: path - required: true - description: Unieke resource identifier (UUID4) - schema: - type: string - format: uuid - - name: uuid - in: path - description: Unieke identificatie van de audit regel. - required: true - schema: - type: string - format: uuid - /besluiten/{uuid}: - get: - operationId: besluit_read - summary: Een specifiek BESLUIT opvragen. - description: Een specifiek BESLUIT opvragen. - responses: - '200': - description: OK headers: API-version: schema: @@ -393,66 +175,105 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Besluit' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' + $ref: '#/components/schemas/Fout' + description: Conflict '410': - $ref: '#/components/responses/410' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone '415': - $ref: '#/components/responses/415' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type '429': - $ref: '#/components/responses/429' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - besluiten.lezen - put: - operationId: besluit_update - summary: Werk een BESLUIT in zijn geheel bij. - description: "Er wordt gevalideerd op:\n- uniciteit van `verantwoorlijkeOrganisatie`\ - \ + `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n- het\ - \ `besluittype` mag niet gewijzigd worden\n- geldigheid `zaak` URL - de resource\ - \ moet opgevraagd kunnen worden\n uit de Zaken API en de vorm van een ZAAK\ - \ hebben.\n- `datum` in het verleden of nu\n- publicatie `besluittype` - `concept`\ - \ moet `false` zijn" + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + post: + operationId: besluit_create + description: "Indien geen identificatie gegeven is, dan wordt deze automatischgegenereerd.\ + \ Er wordt gevalideerd op:\n- uniciteit van `verantwoorlijkeOrganisatie` +\ + \ `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n - geldigheid\ + \ `besluittype` URL - de resource moet opgevraagd kunnen\n worden uit de\ + \ Catalogi API en de vorm van een BESLUITTYPE hebben.\n- geldigheid `zaak`\ + \ URL - de resource moet opgevraagd kunnen worden\n uit de Zaken API en de\ + \ vorm van een ZAAK hebben.\n- `datum` in het verleden of nu\n- publicatie\ + \ `besluittype` \n- `concept` moet `false` zijn \n" + summary: Maak een BESLUIT aan. parameters: - - name: Content-Type - in: header - description: Content type van de verzoekinhoud. - required: true + - in: header + name: Content-Type schema: type: string enum: - application/json - - name: X-NLX-Logrecord-ID - in: header - description: Identifier of the request, traceable throughout the network - required: false + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID schema: type: string - - name: X-Audit-Toelichting - in: header - description: Toelichting waarom een bepaald verzoek wordt gedaan - required: false + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting schema: type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten requestBody: - $ref: '#/components/requestBodies/Besluit' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + required: true + security: + - JWT-Claims: + - besluiten.aanmaken responses: - '200': - description: OK + '201': headers: + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. API-version: schema: type: string @@ -462,66 +283,8 @@ paths: application/json: schema: $ref: '#/components/schemas/Besluit' + description: Created '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - besluiten.bijwerken - patch: - operationId: besluit_partial_update - summary: Werk een BESLUIT deels bij. - description: "Er wordt gevalideerd op:\n- uniciteit van `verantwoorlijkeOrganisatie`\ - \ + `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n- het\ - \ `besluittype` mag niet gewijzigd worden\n- geldigheid `zaak` URL - de resource\ - \ moet opgevraagd kunnen worden\n uit de Zaken API en de vorm van een ZAAK\ - \ hebben.\n- `datum` in het verleden of nu\n- publicatie `besluittype` - `concept`\ - \ moet `false` zijn" - parameters: - - name: Content-Type - in: header - description: Content type van de verzoekinhoud. - required: true - schema: - type: string - enum: - - application/json - - name: X-NLX-Logrecord-ID - in: header - description: Identifier of the request, traceable throughout the network - required: false - schema: - type: string - - name: X-Audit-Toelichting - in: header - description: Toelichting waarom een bepaald verzoek wordt gedaan - required: false - schema: - type: string - requestBody: - $ref: '#/components/requestBodies/Besluit' - responses: - '200': - description: OK headers: API-version: schema: @@ -531,120 +294,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Besluit' - '400': - $ref: '#/components/responses/400' + $ref: '#/components/schemas/ValidatieFout' + description: Bad request '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - besluiten.bijwerken - delete: - operationId: besluit_delete - summary: Verwijder een BESLUIT. - description: 'Verwijder een BESLUIT samen met alle gerelateerde resources binnen - deze API. - - - **De gerelateerde resources zijn** - - - `BESLUITINFORMATIEOBJECT` - - - audit trail regels' - parameters: - - name: X-NLX-Logrecord-ID - in: header - description: Identifier of the request, traceable throughout the network - required: false - schema: - type: string - - name: X-Audit-Toelichting - in: header - description: Toelichting waarom een bepaald verzoek wordt gedaan - required: false - schema: - type: string - responses: - '204': - description: No content headers: API-version: schema: type: string description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' - '401': - $ref: '#/components/responses/401' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluiten - security: - - JWT-Claims: - - besluiten.verwijderen - parameters: - - name: uuid - in: path - required: true - schema: - type: string - format: uuid - /besluitinformatieobjecten: - get: - operationId: besluitinformatieobject_list - summary: Alle BESLUIT-INFORMATIEOBJECT relaties opvragen. - description: Deze lijst kan gefilterd wordt met query-string parameters. - parameters: - - name: besluit - in: query - description: URL-referentie naar het BESLUIT. - required: false - schema: - type: string - format: uri - - name: informatieobject - in: query - description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten API) - waarin (een deel van) het besluit beschreven is. - required: false - schema: - type: string - format: uri - responses: - '200': - description: OK headers: API-version: schema: @@ -654,119 +318,100 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/BesluitInformatieObject' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' + $ref: '#/components/schemas/Fout' + description: Forbidden '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluitinformatieobjecten - security: - - JWT-Claims: - - besluiten.lezen - post: - operationId: besluitinformatieobject_create - summary: Maak een BESLUIT-INFORMATIEOBJECT relatie aan. - description: "Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee\ - \ types van\nrelaties met andere objecten gerealiseerd:\n\n**Er wordt gevalideerd\ - \ op**\n- geldigheid `besluit` URL\n- geldigheid `informatieobject` URL\n\ - - de combinatie `informatieobject` en `besluit` moet uniek zijn\n\n**Opmerkingen**\n\ - - De `registratiedatum` wordt door het systeem op 'NU' gezet. De\n `aardRelatie`\ - \ wordt ook door het systeem gezet.\n- Bij het aanmaken wordt ook in de Documenten\ - \ API de gespiegelde relatie\n aangemaakt, echter zonder de relatie-informatie." - parameters: - - name: Content-Type - in: header - description: Content type van de verzoekinhoud. - required: true - schema: - type: string - enum: - - application/json - - name: X-NLX-Logrecord-ID - in: header - description: Identifier of the request, traceable throughout the network - required: false - schema: - type: string - - name: X-Audit-Toelichting - in: header - description: Toelichting waarom een bepaald verzoek wordt gedaan - required: false - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BesluitInformatieObject' - required: true - responses: - '201': - description: Created headers: API-version: schema: type: string description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' - Location: + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: schema: type: string - format: uri - description: URL waar de resource leeft. + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' content: application/json: schema: - $ref: '#/components/schemas/BesluitInformatieObject' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' + $ref: '#/components/schemas/Fout' + description: Conflict '410': - $ref: '#/components/responses/410' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone '415': - $ref: '#/components/responses/415' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type '429': - $ref: '#/components/responses/429' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests '500': - $ref: '#/components/responses/500' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluiten/{besluit_uuid}/audittrail: + get: + operationId: audittrail_list + description: Alle audit trail regels behorend bij het BESLUIT. + summary: Alle audit trail regels behorend bij het BESLUIT. + parameters: + - in: path + name: besluit_uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + required: true tags: - - besluitinformatieobjecten + - besluiten security: - JWT-Claims: - - besluiten.aanmaken - parameters: [] - /besluitinformatieobjecten/{uuid}: - get: - operationId: besluitinformatieobject_read - summary: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. - description: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. + - audittrails.lezen responses: '200': - description: OK headers: API-version: schema: @@ -776,98 +421,1484 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/BesluitInformatieObject' + type: array + items: + $ref: '#/components/schemas/AuditTrail' + description: OK '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' - '410': - $ref: '#/components/responses/410' - '415': - $ref: '#/components/responses/415' - '429': - $ref: '#/components/responses/429' - '500': - $ref: '#/components/responses/500' - tags: - - besluitinformatieobjecten - security: - - JWT-Claims: - - besluiten.lezen - delete: - operationId: besluitinformatieobject_delete - summary: Verwijder een BESLUIT-INFORMATIEOBJECT relatie. - description: Verwijder een BESLUIT-INFORMATIEOBJECT relatie. - parameters: - - name: X-NLX-Logrecord-ID - in: header - description: Identifier of the request, traceable throughout the network - required: false - schema: - type: string - - name: X-Audit-Toelichting - in: header - description: Toelichting waarom een bepaald verzoek wordt gedaan - required: false - schema: - type: string - responses: - '204': - description: No content headers: API-version: schema: type: string description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' - '401': - $ref: '#/components/responses/401' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '409': - $ref: '#/components/responses/409' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluiten/{besluit_uuid}/audittrail/{uuid}: + get: + operationId: audittrail_retrieve + description: Een specifieke audit trail regel opvragen. + summary: Een specifieke audit trail regel opvragen. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: Unieke identificatie van de audit regel. + title: uuid + required: true + - in: path + name: besluit_uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + required: true + tags: + - besluiten + security: + - JWT-Claims: + - audittrails.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditTrail' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluiten/{uuid}: + get: + operationId: besluit_retrieve + description: Een specifiek BESLUIT opvragen. + summary: Een specifiek BESLUIT opvragen. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + tags: + - besluiten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + put: + operationId: besluit_update + description: "Er wordt gevalideerd op: \n- uniciteit van `verantwoorlijkeOrganisatie`\ + \ + `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n - het\ + \ `besluittype` mag niet gewijzigd worden\n - geldigheid `zaak` URL \n- de\ + \ resource moet opgevraagd kunnen worden\nuit de Zaken API en de vorm van\ + \ een ZAAK hebben.- `datum` in het verleden of nu\n- publicatie `besluittype`\ + \ - `concept` moet `false` zijn\n" + summary: Werk een BESLUIT in zijn geheel bij. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + required: true + security: + - JWT-Claims: + - besluiten.bijwerken + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + patch: + operationId: besluit_partial_update + description: "Er wordt gevalideerd op:\n - uniciteit van `verantwoorlijkeOrganisatie`\ + \ + `identificatie`\n - geldigheid `verantwoorlijkeOrganisatie` RSIN\n- het\ + \ `besluittype` mag niet gewijzigd worden\n- geldigheid `zaak` URL \n- de\ + \ resource moet opgevraagd kunnen worden uit de Zaken API en de vorm van\ + \ een ZAAK hebben.\n - `datum` in het verleden of nu\n - publicatie `besluittype`\ + \ - `concept` moet `false` zijn\n" + summary: Werk een BESLUIT deels bij. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedBesluit' + security: + - JWT-Claims: + - besluiten.bijwerken + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + delete: + operationId: besluit_destroy + description: " Verwijder een BESLUIT samen met alle gerelateerde resources binnen\ + \ deze API. **De gerelateerde resources zijn** \n- `BESLUITINFORMATIEOBJECT`\n\ + - audit trail regels" + summary: Verwijder een BESLUIT. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + security: + - JWT-Claims: + - besluiten.verwijderen + responses: + '204': + description: No content + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluitinformatieobjecten: + get: + operationId: besluitinformatieobject_list + description: Deze lijst kan gefilterd wordt met query-string parameters. + summary: Alle BESLUIT-INFORMATIEOBJECT relaties opvragen. + parameters: + - name: besluit + required: false + in: query + description: besluit + schema: + type: string + - name: informatieobject + required: false + in: query + description: informatieobject + schema: + type: string + tags: + - besluitinformatieobjecten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/BesluitInformatieObject' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + post: + operationId: besluitinformatieobject_create + description: |2 + Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee types van relaties met andere objecten gerealiseerd: + **Er wordt gevalideerd op** - geldigheid `besluit` URL + - geldigheid `informatieobject` URL + - de combinatie `informatieobject` en `besluit` moet uniek zijn + - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn aan `besluit.besluittype` + **Opmerkingen** - De `registratiedatum` wordt door het systeem op 'NU' gezet. De `aardRelatie` wordt ook door het systeem gezet. + - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie aangemaakt, echter zonder de relatie-informatie. + summary: Maak een BESLUIT-INFORMATIEOBJECT relatie aan. + parameters: + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluitinformatieobjecten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BesluitInformatieObject' + required: true + security: + - JWT-Claims: + - besluiten.aanmaken + responses: + '201': + headers: + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/BesluitInformatieObject' + description: Created + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluitinformatieobjecten/{uuid}: + get: + operationId: besluitinformatieobject_retrieve + description: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. + summary: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + title: uuid + required: true + tags: + - besluitinformatieobjecten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/BesluitInformatieObject' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict '410': - $ref: '#/components/responses/410' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone '415': - $ref: '#/components/responses/415' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type '429': - $ref: '#/components/responses/429' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests '500': - $ref: '#/components/responses/500' + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + delete: + operationId: besluitinformatieobject_destroy + description: Verwijder een BESLUIT-INFORMATIEOBJECT relatie. + summary: Verwijder een BESLUIT-INFORMATIEOBJECT relatie. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + title: uuid + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan tags: - besluitinformatieobjecten security: - JWT-Claims: - besluiten.verwijderen - parameters: - - name: uuid - in: path - description: Unieke resource identifier (UUID4) - required: true - schema: - type: string - format: uuid -tags: -- name: besluiten - description: '' -- name: besluitinformatieobjecten - description: '' -servers: -- url: /api/v1 + responses: + '204': + description: No content + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error components: responses: '400': - description: Bad request headers: API-version: schema: @@ -875,11 +1906,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/ValidatieFout' + description: Bad request '401': - description: Unauthorized headers: API-version: schema: @@ -887,11 +1918,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Unauthorized '403': - description: Forbidden headers: API-version: schema: @@ -899,11 +1930,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Forbidden '404': - description: Not found headers: API-version: schema: @@ -911,11 +1942,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Not found '406': - description: Not acceptable headers: API-version: schema: @@ -923,11 +1954,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Not acceptable '409': - description: Conflict headers: API-version: schema: @@ -935,11 +1966,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Conflict '410': - description: Gone headers: API-version: schema: @@ -947,23 +1978,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: - schema: - $ref: '#/components/schemas/Fout' - '412': - description: Precondition failed - headers: - API-version: - schema: - type: string - description: 'Geeft een specifieke API-versie aan in de context van een - specifieke aanroep. Voorbeeld: 1.2.1.' - content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Gone '415': - description: Unsupported media type headers: API-version: schema: @@ -971,11 +1990,11 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Unsupported media type '429': - description: Too many requests headers: API-version: schema: @@ -983,437 +2002,539 @@ components: description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' content: - application/problem+json: + application/json: schema: $ref: '#/components/schemas/Fout' + description: Too many requests '500': - description: Internal server error headers: API-version: schema: type: string description: 'Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/Fout' - requestBodies: - Besluit: content: application/json: schema: - $ref: '#/components/schemas/Besluit' - required: true - securitySchemes: - JWT-Claims: - type: http - scheme: bearer - bearerFormat: JWT + $ref: '#/components/schemas/Fout' + description: Internal server error schemas: + AuditTrail: + type: object + properties: + uuid: + type: string + format: uuid + description: Unieke identificatie van de audit regel. + title: uuid + bron: + allOf: + - $ref: '#/components/schemas/BronEnum' + description: |- + De naam van het component waar de wijziging in is gedaan. + + Uitleg bij mogelijke waarden: + + * `ac` - Autorisaties API + * `nrc` - Notificaties API + * `zrc` - Zaken API + * `ztc` - Catalogi API + * `drc` - Documenten API + * `brc` - Besluiten API + * `cmc` - Contactmomenten API + * `kc` - Klanten API + * `vrc` - Verzoeken API + title: bron + applicatieId: + type: string + description: Unieke identificatie van de applicatie, binnen de organisatie. + title: applicatie id + maxLength: 100 + applicatieWeergave: + type: string + description: Vriendelijke naam van de applicatie. + title: applicatie weergave + maxLength: 200 + gebruikersId: + type: string + description: Unieke identificatie van de gebruiker die binnen de organisatie + herleid kan worden naar een persoon. + title: gebruikers id + maxLength: 255 + gebruikersWeergave: + type: string + description: Vriendelijke naam van de gebruiker. + title: gebruikers weergave + maxLength: 255 + actie: + type: string + description: |- + De uitgevoerde handeling. + + De bekende waardes voor dit veld zijn hieronder aangegeven, maar andere waardes zijn ook toegestaan + + Uitleg bij mogelijke waarden: + + * `create` - Object aangemaakt + * `list` - Lijst van objecten opgehaald + * `retrieve` - Object opgehaald + * `destroy` - Object verwijderd + * `update` - Object bijgewerkt + * `partial_update` - Object deels bijgewerkt + title: actie + maxLength: 50 + actieWeergave: + type: string + description: Vriendelijke naam van de actie. + title: actie weergave + maxLength: 200 + resultaat: + type: integer + maximum: 599 + minimum: 100 + description: HTTP status code van de API response van de uitgevoerde handeling. + title: resultaat + hoofdObject: + type: string + format: uri + description: De URL naar het hoofdobject van een component. + title: hoofd object + maxLength: 1000 + resource: + type: string + description: Het type resource waarop de actie gebeurde. + title: resource + maxLength: 50 + resourceUrl: + type: string + format: uri + description: De URL naar het object. + title: resource url + maxLength: 1000 + toelichting: + type: string + description: Toelichting waarom de handeling is uitgevoerd. + title: toelichting + resourceWeergave: + type: string + description: Vriendelijke identificatie van het object. + title: resource weergave + maxLength: 200 + aanmaakdatum: + type: string + format: date-time + readOnly: true + description: De datum waarop de handeling is gedaan. + title: aanmaakdatum + wijzigingen: + allOf: + - $ref: '#/components/schemas/Wijzigingen' + title: wijzigingen + required: + - aanmaakdatum + - actie + - bron + - hoofdObject + - resource + - resourceUrl + - resourceWeergave + - resultaat + - wijzigingen Besluit: + type: object + properties: + url: + type: string + format: uri + readOnly: true + title: url + identificatie: + type: string + description: Identificatie van het besluit binnen de organisatie die het + besluit heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die + gegenereerd. + title: identificatie + maxLength: 50 + verantwoordelijkeOrganisatie: + type: string + description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie + die het besluit heeft vastgesteld. + title: verantwoordelijke organisatie + maxLength: 9 + besluittype: + type: string + format: uri + description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). + title: besluittype + maxLength: 200 + zaak: + type: string + format: uri + description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit + uitkomst is. + title: zaak + maxLength: 200 + datum: + type: string + format: date + description: De beslisdatum (AWB) van het besluit. + title: datum + toelichting: + type: string + description: Toelichting bij het besluit. + title: toelichting + bestuursorgaan: + type: string + description: Een orgaan van een rechtspersoon krachtens publiekrecht ingesteld + of een persoon of college, met enig openbaar gezag bekleed onder wiens + verantwoordelijkheid het besluit vastgesteld is. + title: bestuursorgaan + maxLength: 50 + ingangsdatum: + type: string + format: date + description: Ingangsdatum van de werkingsperiode van het besluit. + title: ingangsdatum + vervaldatum: + type: string + format: date + nullable: true + description: Datum waarop de werkingsperiode van het besluit eindigt. + title: vervaldatum + vervalreden: + description: |- + De omschrijving die aangeeft op grond waarvan het besluit is of komt te vervallen. + + Uitleg bij mogelijke waarden: + + * `tijdelijk` - Besluit met tijdelijke werking + * `ingetrokken_overheid` - Besluit ingetrokken door overheid + * `ingetrokken_belanghebbende` - Besluit ingetrokken o.v.v. belanghebbende + title: vervalreden + oneOf: + - $ref: '#/components/schemas/VervalredenEnum' + - $ref: '#/components/schemas/BlankEnum' + vervalredenWeergave: + type: string + readOnly: true + title: vervalredenWeergave + publicatiedatum: + type: string + format: date + nullable: true + description: Datum waarop het besluit gepubliceerd wordt. + title: publicatiedatum + verzenddatum: + type: string + format: date + nullable: true + description: Datum waarop het besluit verzonden is. + title: verzenddatum + uiterlijkeReactiedatum: + type: string + format: date + nullable: true + description: De datum tot wanneer verweer tegen het besluit mogelijk is. + title: uiterlijke reactiedatum required: - - verantwoordelijkeOrganisatie - besluittype - datum - ingangsdatum + - url + - verantwoordelijkeOrganisatie + - vervalredenWeergave + BesluitInformatieObject: + type: object + properties: + url: + type: string + format: uri + readOnly: true + title: url + informatieobject: + type: string + format: uri + description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten + API) waarin (een deel van) het besluit beschreven is. + title: informatieobject + maxLength: 1000 + besluit: + type: string + format: uri + description: URL-referentie naar het BESLUIT. + title: besluit + required: + - besluit + - informatieobject + - url + BlankEnum: + enum: + - '' + BronEnum: + enum: + - ac + - nrc + - zrc + - ztc + - drc + - brc + - cmc + - kc + - vrc + type: string + FieldValidationError: + type: object + description: Formaat van validatiefouten. + properties: + name: + type: string + description: Naam van het veld met ongeldige gegevens + title: name + code: + type: string + description: Systeemcode die het type fout aangeeft + title: code + reason: + type: string + description: Uitleg wat er precies fout is met de gegevens + title: reason + required: + - code + - name + - reason + Fout: + type: object + description: Formaat van HTTP 4xx en 5xx fouten. + properties: + type: + type: string + description: URI referentie naar het type fout, bedoeld voor developers + title: type + code: + type: string + description: Systeemcode die het type fout aangeeft + title: code + title: + type: string + description: Generieke titel voor het type fout + title: title + status: + type: integer + description: De HTTP status code + title: status + detail: + type: string + description: Extra informatie bij de fout, indien beschikbaar + title: detail + instance: + type: string + description: URI met referentie naar dit specifiek voorkomen van de fout. + Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld. + title: instance + required: + - code + - detail + - instance + - status + - title + PaginatedBesluitList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=4 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=2 + results: + type: array + items: + $ref: '#/components/schemas/Besluit' + PatchedBesluit: type: object properties: url: - title: Url - description: URL-referentie naar dit object. Dit is de unieke identificatie - en locatie van dit object. type: string format: uri readOnly: true - maxLength: 1000 - minLength: 1 + title: url identificatie: - title: Identificatie + type: string description: Identificatie van het besluit binnen de organisatie die het besluit heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die gegenereerd. - type: string + title: identificatie maxLength: 50 verantwoordelijkeOrganisatie: - title: Verantwoordelijke organisatie + type: string description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie die het besluit heeft vastgesteld. - type: string + title: verantwoordelijke organisatie maxLength: 9 - minLength: 1 besluittype: - title: Besluittype - description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). type: string format: uri + description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). + title: besluittype maxLength: 200 - minLength: 1 zaak: - title: Zaak - description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit - uitkomst is. type: string format: uri + description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit + uitkomst is. + title: zaak maxLength: 200 datum: - title: Datum - description: De beslisdatum (AWB) van het besluit. type: string format: date + description: De beslisdatum (AWB) van het besluit. + title: datum toelichting: - title: Toelichting - description: Toelichting bij het besluit. type: string + description: Toelichting bij het besluit. + title: toelichting bestuursorgaan: - title: Bestuursorgaan + type: string description: Een orgaan van een rechtspersoon krachtens publiekrecht ingesteld of een persoon of college, met enig openbaar gezag bekleed onder wiens verantwoordelijkheid het besluit vastgesteld is. - type: string + title: bestuursorgaan maxLength: 50 ingangsdatum: - title: Ingangsdatum - description: Ingangsdatum van de werkingsperiode van het besluit. type: string format: date + description: Ingangsdatum van de werkingsperiode van het besluit. + title: ingangsdatum vervaldatum: - title: Vervaldatum - description: Datum waarop de werkingsperiode van het besluit eindigt. type: string format: date nullable: true + description: Datum waarop de werkingsperiode van het besluit eindigt. + title: vervaldatum vervalreden: - title: Vervalreden - description: 'De omschrijving die aangeeft op grond waarvan het besluit - is of komt te vervallen. - + description: |- + De omschrijving die aangeeft op grond waarvan het besluit is of komt te vervallen. Uitleg bij mogelijke waarden: - * `tijdelijk` - Besluit met tijdelijke werking - * `ingetrokken_overheid` - Besluit ingetrokken door overheid - - * `ingetrokken_belanghebbende` - Besluit ingetrokken o.v.v. belanghebbende' - type: string - enum: - - tijdelijk - - ingetrokken_overheid - - ingetrokken_belanghebbende + * `ingetrokken_belanghebbende` - Besluit ingetrokken o.v.v. belanghebbende + title: vervalreden + oneOf: + - $ref: '#/components/schemas/VervalredenEnum' + - $ref: '#/components/schemas/BlankEnum' vervalredenWeergave: - title: Vervalreden weergave type: string readOnly: true - minLength: 1 + title: vervalredenWeergave publicatiedatum: - title: Publicatiedatum - description: Datum waarop het besluit gepubliceerd wordt. type: string format: date nullable: true + description: Datum waarop het besluit gepubliceerd wordt. + title: publicatiedatum verzenddatum: - title: Verzenddatum - description: Datum waarop het besluit verzonden is. type: string format: date nullable: true + description: Datum waarop het besluit verzonden is. + title: verzenddatum uiterlijkeReactiedatum: - title: Uiterlijke reactiedatum - description: De datum tot wanneer verweer tegen het besluit mogelijk is. type: string format: date nullable: true - Fout: - required: - - code - - title - - status - - detail - - instance - type: object - properties: - type: - title: Type - description: URI referentie naar het type fout, bedoeld voor developers - type: string - code: - title: Code - description: Systeemcode die het type fout aangeeft - type: string - minLength: 1 - title: - title: Title - description: Generieke titel voor het type fout - type: string - minLength: 1 - status: - title: Status - description: De HTTP status code - type: integer - detail: - title: Detail - description: Extra informatie bij de fout, indien beschikbaar - type: string - minLength: 1 - instance: - title: Instance - description: URI met referentie naar dit specifiek voorkomen van de fout. - Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld. - type: string - minLength: 1 - FieldValidationError: - required: - - name - - code - - reason - type: object - properties: - name: - title: Name - description: Naam van het veld met ongeldige gegevens - type: string - minLength: 1 - code: - title: Code - description: Systeemcode die het type fout aangeeft - type: string - minLength: 1 - reason: - title: Reason - description: Uitleg wat er precies fout is met de gegevens - type: string - minLength: 1 + description: De datum tot wanneer verweer tegen het besluit mogelijk is. + title: uiterlijke reactiedatum ValidatieFout: - required: - - code - - title - - status - - detail - - instance - - invalidParams type: object + description: Formaat van HTTP 4xx en 5xx fouten. properties: type: - title: Type - description: URI referentie naar het type fout, bedoeld voor developers type: string + description: URI referentie naar het type fout, bedoeld voor developers + title: type code: - title: Code - description: Systeemcode die het type fout aangeeft type: string - minLength: 1 + description: Systeemcode die het type fout aangeeft + title: code title: - title: Title - description: Generieke titel voor het type fout type: string - minLength: 1 + description: Generieke titel voor het type fout + title: title status: - title: Status - description: De HTTP status code type: integer + description: De HTTP status code + title: status detail: - title: Detail - description: Extra informatie bij de fout, indien beschikbaar type: string - minLength: 1 + description: Extra informatie bij de fout, indien beschikbaar + title: detail instance: - title: Instance + type: string description: URI met referentie naar dit specifiek voorkomen van de fout. Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld. - type: string - minLength: 1 + title: instance invalidParams: type: array items: $ref: '#/components/schemas/FieldValidationError' + title: invalidParams + required: + - code + - detail + - instance + - invalidParams + - status + - title + VervalredenEnum: + enum: + - tijdelijk + - ingetrokken_overheid + - ingetrokken_belanghebbende + type: string Wijzigingen: type: object + description: |- + Generate a serializer out of a GegevensGroepType. + + Usage:: + + >>> class VerlengingSerializer(GegevensGroepSerializer): + ... class Meta: + ... model = Zaak + ... gegevensgroep = 'verlenging' + >>> + + Where ``Zaak.verlenging`` is a :class:``GegevensGroepType``. properties: oud: - title: Oud + type: object + additionalProperties: {} description: Volledige JSON body van het object zoals dat bestond voordat de actie heeft plaatsgevonden. - type: object + title: oud nieuw: - title: Nieuw - description: Volledige JSON body van het object na de actie. type: object - AuditTrail: - required: - - bron - - actie - - resultaat - - hoofdObject - - resource - - resourceUrl - - resourceWeergave - - wijzigingen - type: object - properties: - uuid: - title: Uuid - description: Unieke identificatie van de audit regel. - type: string - format: uuid - bron: - title: Bron - description: 'De naam van het component waar de wijziging in is gedaan. - - - Uitleg bij mogelijke waarden: - - - * `ac` - Autorisaties API - - * `nrc` - Notificaties API - - * `zrc` - Zaken API - - * `ztc` - Catalogi API - - * `drc` - Documenten API - - * `brc` - Besluiten API - - * `cmc` - Contactmomenten API - - * `kc` - Klanten API - - * `vrc` - Verzoeken API' - type: string - enum: - - ac - - nrc - - zrc - - ztc - - drc - - brc - - cmc - - kc - - vrc - applicatieId: - title: Applicatie id - description: Unieke identificatie van de applicatie, binnen de organisatie. - type: string - maxLength: 100 - applicatieWeergave: - title: Applicatie weergave - description: Vriendelijke naam van de applicatie. - type: string - maxLength: 200 - gebruikersId: - title: Gebruikers id - description: Unieke identificatie van de gebruiker die binnen de organisatie - herleid kan worden naar een persoon. - type: string - maxLength: 255 - gebruikersWeergave: - title: Gebruikers weergave - description: Vriendelijke naam van de gebruiker. - type: string - maxLength: 255 - actie: - title: Actie - description: 'De uitgevoerde handeling. - - - De bekende waardes voor dit veld zijn hieronder aangegeven, maar - andere waardes zijn ook toegestaan - - - Uitleg bij mogelijke waarden: - - - * `create` - Object aangemaakt - - * `list` - Lijst van objecten opgehaald - - * `retrieve` - Object opgehaald - - * `destroy` - Object verwijderd - - * `update` - Object bijgewerkt - - * `partial_update` - Object deels bijgewerkt' - type: string - maxLength: 50 - minLength: 1 - actieWeergave: - title: Actie weergave - description: Vriendelijke naam van de actie. - type: string - maxLength: 200 - resultaat: - title: Resultaat - description: HTTP status code van de API response van de uitgevoerde handeling. - type: integer - maximum: 599 - minimum: 100 - hoofdObject: - title: Hoofd object - description: De URL naar het hoofdobject van een component. - type: string - format: uri - maxLength: 1000 - minLength: 1 - resource: - title: Resource - description: Het type resource waarop de actie gebeurde. - type: string - maxLength: 50 - minLength: 1 - resourceUrl: - title: Resource url - description: De URL naar het object. - type: string - format: uri - maxLength: 1000 - minLength: 1 - toelichting: - title: Toelichting - description: Toelichting waarom de handeling is uitgevoerd. - type: string - resourceWeergave: - title: Resource weergave - description: Vriendelijke identificatie van het object. - type: string - maxLength: 200 - minLength: 1 - aanmaakdatum: - title: Aanmaakdatum - description: De datum waarop de handeling is gedaan. - type: string - format: date-time - readOnly: true - wijzigingen: - $ref: '#/components/schemas/Wijzigingen' - BesluitInformatieObject: - required: - - informatieobject - - besluit - type: object - properties: - url: - title: Url - description: URL-referentie naar dit object. Dit is de unieke identificatie - en locatie van dit object. - type: string - format: uri - readOnly: true - maxLength: 1000 - minLength: 1 - informatieobject: - title: Informatieobject - description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten - API) waarin (een deel van) het besluit beschreven is. - type: string - format: uri - maxLength: 1000 - minLength: 1 - besluit: - title: Besluit - description: URL-referentie naar het BESLUIT. - type: string - format: uri + additionalProperties: {} + description: Volledige JSON body van het object na de actie. + title: nieuw + securitySchemes: + JWT-Claims: + type: http + bearerFormat: JWT + scheme: bearer +servers: +- url: https://besluiten-api.test.vng.cloud/api/v1 +tags: +- name: besluiten + description: Opvragen en bewerken van BESLUITen. +- name: besluitinformatieobjecten + description: Opvragen en bewerken van BESLUIT-INFORMATIEOBJECT relaties. From 95939ea3a7869d8c2d902ca9a72b217162f00d79 Mon Sep 17 00:00:00 2001 From: matthijsbekendam Date: Mon, 24 Oct 2022 13:48:35 +0200 Subject: [PATCH 2/4] removed warnings from generate_schema --- src/brc/conf/base.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/brc/conf/base.py b/src/brc/conf/base.py index 06897aa..f822c55 100644 --- a/src/brc/conf/base.py +++ b/src/brc/conf/base.py @@ -89,6 +89,7 @@ "django.middleware.clickjacking.XFrameOptionsMiddleware", "corsheaders.middleware.CorsMiddleware", "vng_api_common.middleware.APIVersionHeaderMiddleware", + "axes.middleware.AxesMiddleware", ] ROOT_URLCONF = "brc.urls" @@ -176,6 +177,8 @@ MEDIA_URL = "/media/" +DEFAULT_AUTO_FIELD = "django.db.models.AutoField" + FIXTURE_DIRS = (os.path.join(DJANGO_PROJECT_DIR, "fixtures"),) DEFAULT_FROM_EMAIL = "brc@example.com" From 2814ce227ba03864f0169452279580579b87c04d Mon Sep 17 00:00:00 2001 From: matthijsbekendam Date: Mon, 24 Oct 2022 14:16:40 +0200 Subject: [PATCH 3/4] extensions and query params --- requirements/base.in | 2 +- requirements/base.txt | 2 +- requirements/ci.txt | 2 +- requirements/dev.txt | 2 +- requirements/production.txt | 2 +- src/brc/api/apps.py | 4 +++ src/brc/api/viewsets.py | 19 +++++----- src/brc/conf/api.py | 8 +++++ src/openapi.yaml | 72 +++++++++++++++++++++++++------------ 9 files changed, 75 insertions(+), 38 deletions(-) diff --git a/requirements/base.in b/requirements/base.in index d1592cf..4601ada 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -19,4 +19,4 @@ django_redis django_capture_on_commit_callbacks djangorestframework -git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade#egg=vng_api_common +vng_api_common==1.11.0 diff --git a/requirements/base.txt b/requirements/base.txt index 2d81cb1..6d4c999 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -229,7 +229,7 @@ uritemplate==4.1.1 # via drf-spectacular urllib3==1.26.12 # via requests -vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade +vng-api-common==1.11.0 # via -r requirements/base.in wrapt==1.14.1 # via deprecated diff --git a/requirements/ci.txt b/requirements/ci.txt index cd6d531..e893216 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -374,7 +374,7 @@ urllib3==1.26.12 # via # -r requirements/base.txt # requests -vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade +vng-api-common==1.11.0 # via -r requirements/base.txt wrapt==1.14.1 # via diff --git a/requirements/dev.txt b/requirements/dev.txt index 913696f..9cc2b65 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -375,7 +375,7 @@ urllib3==1.26.12 # via # -r requirements/base.txt # requests -vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade +vng-api-common==1.11.0 # via -r requirements/base.txt wrapt==1.14.1 # via diff --git a/requirements/production.txt b/requirements/production.txt index 995b43b..195a7ee 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -332,7 +332,7 @@ urllib3==1.26.12 # requests uwsgi==2.0.20 # via -r requirements/production.in -vng-api-common @ git+https://github.com/VNG-Realisatie/vng-api-common@drf-spectacular-upgrade +vng-api-common==1.11.0 # via -r requirements/base.txt wrapt==1.14.1 # via diff --git a/src/brc/api/apps.py b/src/brc/api/apps.py index 7df3bd3..98f1816 100644 --- a/src/brc/api/apps.py +++ b/src/brc/api/apps.py @@ -1,9 +1,13 @@ from django.apps import AppConfig +from vng_api_common.api import register_extensions + class BRCApiConfig(AppConfig): name = "brc.api" def ready(self): + register_extensions() + # ensure that the metaclass for every viewset has run from . import viewsets # noqa diff --git a/src/brc/api/viewsets.py b/src/brc/api/viewsets.py index 78627f9..9f3c8bb 100644 --- a/src/brc/api/viewsets.py +++ b/src/brc/api/viewsets.py @@ -55,8 +55,7 @@ "- geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden\n" " uit de Zaken API en de vorm van een ZAAK hebben.\n" "- `datum` in het verleden of nu\n" - "- publicatie `besluittype` \n" - "- `concept` moet `false` zijn \n" + "- publicatie `besluittype` - `concept` moet `false` zijn \n" ), ), update=extend_schema( @@ -66,9 +65,8 @@ "- uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`\n" "- geldigheid `verantwoorlijkeOrganisatie` RSIN\n" " - het `besluittype` mag niet gewijzigd worden\n" - " - geldigheid `zaak` URL \n" - "- de resource moet opgevraagd kunnen worden\n" - "uit de Zaken API en de vorm van een ZAAK hebben." + " - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden\n" + "uit de Zaken API en de vorm van een ZAAK hebben.\n" "- `datum` in het verleden of nu\n" "- publicatie `besluittype` - `concept` moet `false` zijn\n" ), @@ -80,8 +78,7 @@ " - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie`\n" " - geldigheid `verantwoorlijkeOrganisatie` RSIN\n" "- het `besluittype` mag niet gewijzigd worden\n" - "- geldigheid `zaak` URL \n" - "- de resource moet opgevraagd kunnen worden" + "- geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden" " uit de Zaken API en de vorm van een ZAAK hebben.\n" " - `datum` in het verleden of nu\n" " - publicatie `besluittype` - `concept` moet `false` zijn\n" @@ -106,7 +103,7 @@ class BesluitViewSet( ): queryset = Besluit.objects.all().order_by("-pk") serializer_class = BesluitSerializer - filter_class = BesluitFilter + filterset_class = BesluitFilter lookup_field = "uuid" pagination_class = PageNumberPagination permission_classes = (BesluitAuthScopesRequired,) @@ -135,15 +132,15 @@ class BesluitViewSet( create=extend_schema( summary=_("Maak een BESLUIT-INFORMATIEOBJECT relatie aan."), description=_( - " Registreer een INFORMATIEOBJECT bij een BESLUIT. " + "Registreer een INFORMATIEOBJECT bij een BESLUIT. " "Er worden twee types van relaties met andere objecten gerealiseerd:\n" - "**Er wordt gevalideerd op**" + "\n**Er wordt gevalideerd op**\n" " - geldigheid `besluit` URL\n" " - geldigheid `informatieobject` URL\n" "- de combinatie `informatieobject` en `besluit` moet uniek zijn\n" " - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn" " aan `besluit.besluittype`\n" - "**Opmerkingen**" + "\n**Opmerkingen**\n" " - De `registratiedatum` wordt door het systeem op 'NU' gezet. De" " `aardRelatie` wordt ook door het systeem gezet.\n" " - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie" diff --git a/src/brc/conf/api.py b/src/brc/conf/api.py index dd0bb23..93fd9fc 100644 --- a/src/brc/conf/api.py +++ b/src/brc/conf/api.py @@ -18,6 +18,14 @@ } ) +SPECTACULAR_EXTENSIONS = [ + "vng_api_common.extensions.fields.hyperlink_identity.HyperlinkedIdentityFieldExtension", + "vng_api_common.extensions.fields.hyperlinked_related.HyperlinkedRelatedFieldExtension", + "vng_api_common.extensions.fields.many_related.ManyRelatedFieldExtension", + "vng_api_common.extensions.fields.read_only.ReadOnlyFieldExtension", + "vng_api_common.extensions.filters.query.FilterExtension", +] + GEMMA_URL_INFORMATIEMODEL_VERSIE = "1.0" ztc_repo = "vng-Realisatie/gemma-zaaktypecatalogus" diff --git a/src/openapi.yaml b/src/openapi.yaml index 4484100..cb2eb74 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -72,27 +72,32 @@ paths: - name: identificatie required: false in: query - description: identificatie + description: Identificatie van het besluit binnen de organisatie die het besluit + heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die gegenereerd. schema: type: string - - name: verantwoordelijke_organisatie + - name: verantwoordelijkeOrganisatie required: false in: query - description: verantwoordelijke_organisatie + description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie + die het besluit heeft vastgesteld. schema: type: string - name: besluittype required: false in: query - description: besluittype + description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). schema: type: string + format: uri - name: zaak required: false in: query - description: zaak + description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit + uitkomst is. schema: type: string + format: uri - name: page required: false in: query @@ -234,7 +239,7 @@ paths: \ Catalogi API en de vorm van een BESLUITTYPE hebben.\n- geldigheid `zaak`\ \ URL - de resource moet opgevraagd kunnen worden\n uit de Zaken API en de\ \ vorm van een ZAAK hebben.\n- `datum` in het verleden of nu\n- publicatie\ - \ `besluittype` \n- `concept` moet `false` zijn \n" + \ `besluittype` - `concept` moet `false` zijn \n" summary: Maak een BESLUIT aan. parameters: - in: header @@ -811,10 +816,10 @@ paths: operationId: besluit_update description: "Er wordt gevalideerd op: \n- uniciteit van `verantwoorlijkeOrganisatie`\ \ + `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n - het\ - \ `besluittype` mag niet gewijzigd worden\n - geldigheid `zaak` URL \n- de\ - \ resource moet opgevraagd kunnen worden\nuit de Zaken API en de vorm van\ - \ een ZAAK hebben.- `datum` in het verleden of nu\n- publicatie `besluittype`\ - \ - `concept` moet `false` zijn\n" + \ `besluittype` mag niet gewijzigd worden\n - geldigheid `zaak` URL - de resource\ + \ moet opgevraagd kunnen worden\nuit de Zaken API en de vorm van een ZAAK\ + \ hebben.\n- `datum` in het verleden of nu\n- publicatie `besluittype` - `concept`\ + \ moet `false` zijn\n" summary: Werk een BESLUIT in zijn geheel bij. parameters: - in: path @@ -988,12 +993,14 @@ paths: description: Internal server error patch: operationId: besluit_partial_update - description: "Er wordt gevalideerd op:\n - uniciteit van `verantwoorlijkeOrganisatie`\ - \ + `identificatie`\n - geldigheid `verantwoorlijkeOrganisatie` RSIN\n- het\ - \ `besluittype` mag niet gewijzigd worden\n- geldigheid `zaak` URL \n- de\ - \ resource moet opgevraagd kunnen worden uit de Zaken API en de vorm van\ - \ een ZAAK hebben.\n - `datum` in het verleden of nu\n - publicatie `besluittype`\ - \ - `concept` moet `false` zijn\n" + description: | + Er wordt gevalideerd op: + - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie` + - geldigheid `verantwoorlijkeOrganisatie` RSIN + - het `besluittype` mag niet gewijzigd worden + - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden uit de Zaken API en de vorm van een ZAAK hebben. + - `datum` in het verleden of nu + - publicatie `besluittype` - `concept` moet `false` zijn summary: Werk een BESLUIT deels bij. parameters: - in: path @@ -1313,15 +1320,18 @@ paths: - name: besluit required: false in: query - description: besluit + description: URL-referentie naar het BESLUIT. schema: type: string + format: uri - name: informatieobject required: false in: query - description: informatieobject + description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten API) + waarin (een deel van) het besluit beschreven is. schema: type: string + format: uri tags: - besluitinformatieobjecten security: @@ -1452,13 +1462,17 @@ paths: description: Internal server error post: operationId: besluitinformatieobject_create - description: |2 - Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee types van relaties met andere objecten gerealiseerd: - **Er wordt gevalideerd op** - geldigheid `besluit` URL + description: | + Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee types van relaties met andere objecten gerealiseerd: + + **Er wordt gevalideerd op** + - geldigheid `besluit` URL - geldigheid `informatieobject` URL - de combinatie `informatieobject` en `besluit` moet uniek zijn - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn aan `besluit.besluittype` - **Opmerkingen** - De `registratiedatum` wordt door het systeem op 'NU' gezet. De `aardRelatie` wordt ook door het systeem gezet. + + **Opmerkingen** + - De `registratiedatum` wordt door het systeem op 'NU' gezet. De `aardRelatie` wordt ook door het systeem gezet. - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie aangemaakt, echter zonder de relatie-informatie. summary: Maak een BESLUIT-INFORMATIEOBJECT relatie aan. parameters: @@ -2148,6 +2162,10 @@ components: format: uri readOnly: true title: url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + minLength: 1 + maxLength: 1000 identificatie: type: string description: Identificatie van het besluit binnen de organisatie die het @@ -2251,6 +2269,10 @@ components: format: uri readOnly: true title: url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + minLength: 1 + maxLength: 1000 informatieobject: type: string format: uri @@ -2263,6 +2285,8 @@ components: format: uri description: URL-referentie naar het BESLUIT. title: besluit + minLength: 1 + maxLength: 1000 required: - besluit - informatieobject @@ -2365,6 +2389,10 @@ components: format: uri readOnly: true title: url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + minLength: 1 + maxLength: 1000 identificatie: type: string description: Identificatie van het besluit binnen de organisatie die het From b32308549fa7fb1050c91eb49d06bdcd3c7cb480 Mon Sep 17 00:00:00 2001 From: matthijsbekendam Date: Mon, 24 Oct 2022 15:26:49 +0200 Subject: [PATCH 4/4] fixed tests --- src/brc/api/tests/mixins.py | 28 + src/brc/api/tests/test_dso_api_strategy.py | 15 +- src/brc/conf/base.py | 2 + src/brc/tests/schemas/brc.yaml | 2568 ++++++++++++++++++++ src/brc/tests/test_notifications_kanaal.py | 53 +- src/brc/tests/test_notifications_send.py | 26 +- src/brc/tests/test_sync_besluit.py | 2 +- src/brc/tests/test_userstory_349.py | 2 +- src/brc/tests/utils.py | 15 + 9 files changed, 2667 insertions(+), 44 deletions(-) create mode 100644 src/brc/tests/schemas/brc.yaml create mode 100644 src/brc/tests/utils.py diff --git a/src/brc/api/tests/mixins.py b/src/brc/api/tests/mixins.py index 93b79a4..bad7ee7 100644 --- a/src/brc/api/tests/mixins.py +++ b/src/brc/api/tests/mixins.py @@ -1,5 +1,9 @@ from unittest.mock import patch +from notifications_api_common.models import NotificationsConfig +from zgw_consumers.constants import APITypes, AuthTypes +from zgw_consumers.models import Service + class BesluitInformatieObjectSyncMixin: def setUp(self): @@ -29,3 +33,27 @@ def setUp(self): class MockSyncMixin(BesluitSyncMixin, BesluitInformatieObjectSyncMixin): pass + + +class NotificationsConfigMixin: + @classmethod + def setUpTestData(cls): + super().setUpTestData() + + cls._configure_notifications() + + @staticmethod + def _configure_notifications(api_root=None): + svc, _ = Service.objects.update_or_create( + api_root=api_root or "https://notificaties-api.vng.cloud/api/v1/", + defaults=dict( + label="Notifications API", + api_type=APITypes.nrc, + client_id="some-client-id", + secret="some-secret", + auth_type=AuthTypes.zgw, + ), + ) + config = NotificationsConfig.get_solo() + config.notifications_api_service = svc + config.save() diff --git a/src/brc/api/tests/test_dso_api_strategy.py b/src/brc/api/tests/test_dso_api_strategy.py index 5ca556d..a7e0f29 100644 --- a/src/brc/api/tests/test_dso_api_strategy.py +++ b/src/brc/api/tests/test_dso_api_strategy.py @@ -9,23 +9,12 @@ class DSOApiStrategyTests(APITestCase): - def test_api_19_documentation_version_json(self): - url = reverse("schema-json", kwargs={"format": ".json"}) - - response = self.client.get(url) - - self.assertIn("application/json", response["Content-Type"]) - - doc = response.json() - - self.assertGreaterEqual(doc["openapi"], "3.0.0") - def test_api_19_documentation_version_yaml(self): - url = reverse("schema-json", kwargs={"format": ".yaml"}) + url = reverse("schema") response = self.client.get(url) - self.assertIn("application/yaml", response["Content-Type"]) + self.assertIn("application/vnd.oai.openapi", response["Content-Type"]) doc = yaml.safe_load(response.content) diff --git a/src/brc/conf/base.py b/src/brc/conf/base.py index f822c55..4e6f6e4 100644 --- a/src/brc/conf/base.py +++ b/src/brc/conf/base.py @@ -340,3 +340,5 @@ # URL for documentation that's shown in API schema DOCUMENTATION_URL = "https://vng-realisatie.github.io/gemma-zaken" + +TEST_SPEC_DIRS = (os.path.join(DJANGO_PROJECT_DIR, "tests", "schemas"),) diff --git a/src/brc/tests/schemas/brc.yaml b/src/brc/tests/schemas/brc.yaml new file mode 100644 index 0000000..cb2eb74 --- /dev/null +++ b/src/brc/tests/schemas/brc.yaml @@ -0,0 +1,2568 @@ +openapi: 3.0.3 +info: + title: Besluiten API + version: 1.0.1 + description: | + Een API om een besluitregistratiecomponent (BRC) te benaderen. + + Een BESLUIT wordt veelal schriftelijk vastgelegd maar dit is niet + noodzakelijk. Omgekeerd kan het voorkomen dat in een INFORMATIEOBJECT meerdere + besluiten vastgelegd zijn. Vandaar de N:M-relatie naar INFORMATIEOBJECT. Een + besluit komt voort uit een zaak van de zaakbehandelende organisatie dan wel is + een besluit van een andere organisatie dat het onderwerp (object) is van een + zaak van de zaakbehandelende organisatie. BESLUIT heeft dan ook een optionele + relatie met de ZAAK waarvan het een uitkomst is. + + De typering van BESLUITen is in de Catalogi API (ZTC) ondergebracht in de vorm + van BESLUITTYPEn. + + **Afhankelijkheden** + + Deze API is afhankelijk van: + + * Catalogi API + * Notificaties API + * Documenten API *(optioneel)* + * Zaken API *(optioneel)* + * Autorisaties API *(optioneel)* + + **Autorisatie** + + Deze API vereist autorisatie. Je kan de + [token-tool](https://zaken-auth.vng.cloud/) gebruiken om JWT-tokens te + genereren. + + ### Notificaties + + Deze API publiceert notificaties op het kanaal `besluiten`. + + **Main resource** + + `besluit` + + + + **Kenmerken** + + * `verantwoordelijke_organisatie`: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie die het besluit heeft vastgesteld. + * `besluittype`: URL-referentie naar het BESLUITTYPE (in de Catalogi API). + + **Resources en acties** + - `besluit`: create, update, destroy + - `besluitinformatieobject`: create, destroy + + + **Handige links** + + * [Documentatie](https://vng-realisatie.github.io/gemma-zaken/standaard) + * [Zaakgericht werken](https://vng-realisatie.github.io/gemma-zaken) + contact: + email: standaarden.ondersteuning@vng.nl + url: https://vng-realisatie.github.io/gemma-zaken + license: + name: EUPL 1.2 + url: https://opensource.org/licenses/EUPL-1.2 +paths: + /api/v1/besluiten: + get: + operationId: besluit_list + description: Deze lijst kan gefilterd wordt met query-string parameters. + summary: Alle BESLUITen opvragen. + parameters: + - name: identificatie + required: false + in: query + description: Identificatie van het besluit binnen de organisatie die het besluit + heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die gegenereerd. + schema: + type: string + - name: verantwoordelijkeOrganisatie + required: false + in: query + description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie + die het besluit heeft vastgesteld. + schema: + type: string + - name: besluittype + required: false + in: query + description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). + schema: + type: string + format: uri + - name: zaak + required: false + in: query + description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit + uitkomst is. + schema: + type: string + format: uri + - name: page + required: false + in: query + description: Een pagina binnen de gepagineerde set resultaten. + schema: + type: integer + tags: + - besluiten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedBesluitList' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + post: + operationId: besluit_create + description: "Indien geen identificatie gegeven is, dan wordt deze automatischgegenereerd.\ + \ Er wordt gevalideerd op:\n- uniciteit van `verantwoorlijkeOrganisatie` +\ + \ `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n - geldigheid\ + \ `besluittype` URL - de resource moet opgevraagd kunnen\n worden uit de\ + \ Catalogi API en de vorm van een BESLUITTYPE hebben.\n- geldigheid `zaak`\ + \ URL - de resource moet opgevraagd kunnen worden\n uit de Zaken API en de\ + \ vorm van een ZAAK hebben.\n- `datum` in het verleden of nu\n- publicatie\ + \ `besluittype` - `concept` moet `false` zijn \n" + summary: Maak een BESLUIT aan. + parameters: + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + required: true + security: + - JWT-Claims: + - besluiten.aanmaken + responses: + '201': + headers: + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: Created + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluiten/{besluit_uuid}/audittrail: + get: + operationId: audittrail_list + description: Alle audit trail regels behorend bij het BESLUIT. + summary: Alle audit trail regels behorend bij het BESLUIT. + parameters: + - in: path + name: besluit_uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + required: true + tags: + - besluiten + security: + - JWT-Claims: + - audittrails.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditTrail' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluiten/{besluit_uuid}/audittrail/{uuid}: + get: + operationId: audittrail_retrieve + description: Een specifieke audit trail regel opvragen. + summary: Een specifieke audit trail regel opvragen. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: Unieke identificatie van de audit regel. + title: uuid + required: true + - in: path + name: besluit_uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + required: true + tags: + - besluiten + security: + - JWT-Claims: + - audittrails.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditTrail' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluiten/{uuid}: + get: + operationId: besluit_retrieve + description: Een specifiek BESLUIT opvragen. + summary: Een specifiek BESLUIT opvragen. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + tags: + - besluiten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + put: + operationId: besluit_update + description: "Er wordt gevalideerd op: \n- uniciteit van `verantwoorlijkeOrganisatie`\ + \ + `identificatie`\n- geldigheid `verantwoorlijkeOrganisatie` RSIN\n - het\ + \ `besluittype` mag niet gewijzigd worden\n - geldigheid `zaak` URL - de resource\ + \ moet opgevraagd kunnen worden\nuit de Zaken API en de vorm van een ZAAK\ + \ hebben.\n- `datum` in het verleden of nu\n- publicatie `besluittype` - `concept`\ + \ moet `false` zijn\n" + summary: Werk een BESLUIT in zijn geheel bij. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + required: true + security: + - JWT-Claims: + - besluiten.bijwerken + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + patch: + operationId: besluit_partial_update + description: | + Er wordt gevalideerd op: + - uniciteit van `verantwoorlijkeOrganisatie` + `identificatie` + - geldigheid `verantwoorlijkeOrganisatie` RSIN + - het `besluittype` mag niet gewijzigd worden + - geldigheid `zaak` URL - de resource moet opgevraagd kunnen worden uit de Zaken API en de vorm van een ZAAK hebben. + - `datum` in het verleden of nu + - publicatie `besluittype` - `concept` moet `false` zijn + summary: Werk een BESLUIT deels bij. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedBesluit' + security: + - JWT-Claims: + - besluiten.bijwerken + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Besluit' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + delete: + operationId: besluit_destroy + description: " Verwijder een BESLUIT samen met alle gerelateerde resources binnen\ + \ deze API. **De gerelateerde resources zijn** \n- `BESLUITINFORMATIEOBJECT`\n\ + - audit trail regels" + summary: Verwijder een BESLUIT. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + title: uuid + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluiten + security: + - JWT-Claims: + - besluiten.verwijderen + responses: + '204': + description: No content + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluitinformatieobjecten: + get: + operationId: besluitinformatieobject_list + description: Deze lijst kan gefilterd wordt met query-string parameters. + summary: Alle BESLUIT-INFORMATIEOBJECT relaties opvragen. + parameters: + - name: besluit + required: false + in: query + description: URL-referentie naar het BESLUIT. + schema: + type: string + format: uri + - name: informatieobject + required: false + in: query + description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten API) + waarin (een deel van) het besluit beschreven is. + schema: + type: string + format: uri + tags: + - besluitinformatieobjecten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/BesluitInformatieObject' + description: OK + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + post: + operationId: besluitinformatieobject_create + description: | + Registreer een INFORMATIEOBJECT bij een BESLUIT. Er worden twee types van relaties met andere objecten gerealiseerd: + + **Er wordt gevalideerd op** + - geldigheid `besluit` URL + - geldigheid `informatieobject` URL + - de combinatie `informatieobject` en `besluit` moet uniek zijn + - `informatieobject.informatieobjecttype` moet in het ZTC gerelateerd zijn aan `besluit.besluittype` + + **Opmerkingen** + - De `registratiedatum` wordt door het systeem op 'NU' gezet. De `aardRelatie` wordt ook door het systeem gezet. + - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie aangemaakt, echter zonder de relatie-informatie. + summary: Maak een BESLUIT-INFORMATIEOBJECT relatie aan. + parameters: + - in: header + name: Content-Type + schema: + type: string + enum: + - application/json + description: Content type van de verzoekinhoud. + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluitinformatieobjecten + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BesluitInformatieObject' + required: true + security: + - JWT-Claims: + - besluiten.aanmaken + responses: + '201': + headers: + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/BesluitInformatieObject' + description: Created + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + /api/v1/besluitinformatieobjecten/{uuid}: + get: + operationId: besluitinformatieobject_retrieve + description: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. + summary: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + title: uuid + required: true + tags: + - besluitinformatieobjecten + security: + - JWT-Claims: + - besluiten.lezen + responses: + '200': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/BesluitInformatieObject' + description: OK + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + delete: + operationId: besluitinformatieobject_destroy + description: Verwijder een BESLUIT-INFORMATIEOBJECT relatie. + summary: Verwijder een BESLUIT-INFORMATIEOBJECT relatie. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: Unieke resource identifier (UUID4) + title: uuid + required: true + - in: header + name: X-NLX-Logrecord-ID + schema: + type: string + description: Identifier of the request, traceable throughout the network + - in: header + name: X-Audit-Toelichting + schema: + type: string + description: Toelichting waarom een bepaald verzoek wordt gedaan + tags: + - besluitinformatieobjecten + security: + - JWT-Claims: + - besluiten.verwijderen + responses: + '204': + description: No content + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error +components: + responses: + '400': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ValidatieFout' + description: Bad request + '401': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unauthorized + '403': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Forbidden + '404': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not found + '406': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Not acceptable + '409': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Conflict + '410': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Gone + '415': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Unsupported media type + '429': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Too many requests + '500': + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Fout' + description: Internal server error + schemas: + AuditTrail: + type: object + properties: + uuid: + type: string + format: uuid + description: Unieke identificatie van de audit regel. + title: uuid + bron: + allOf: + - $ref: '#/components/schemas/BronEnum' + description: |- + De naam van het component waar de wijziging in is gedaan. + + Uitleg bij mogelijke waarden: + + * `ac` - Autorisaties API + * `nrc` - Notificaties API + * `zrc` - Zaken API + * `ztc` - Catalogi API + * `drc` - Documenten API + * `brc` - Besluiten API + * `cmc` - Contactmomenten API + * `kc` - Klanten API + * `vrc` - Verzoeken API + title: bron + applicatieId: + type: string + description: Unieke identificatie van de applicatie, binnen de organisatie. + title: applicatie id + maxLength: 100 + applicatieWeergave: + type: string + description: Vriendelijke naam van de applicatie. + title: applicatie weergave + maxLength: 200 + gebruikersId: + type: string + description: Unieke identificatie van de gebruiker die binnen de organisatie + herleid kan worden naar een persoon. + title: gebruikers id + maxLength: 255 + gebruikersWeergave: + type: string + description: Vriendelijke naam van de gebruiker. + title: gebruikers weergave + maxLength: 255 + actie: + type: string + description: |- + De uitgevoerde handeling. + + De bekende waardes voor dit veld zijn hieronder aangegeven, maar andere waardes zijn ook toegestaan + + Uitleg bij mogelijke waarden: + + * `create` - Object aangemaakt + * `list` - Lijst van objecten opgehaald + * `retrieve` - Object opgehaald + * `destroy` - Object verwijderd + * `update` - Object bijgewerkt + * `partial_update` - Object deels bijgewerkt + title: actie + maxLength: 50 + actieWeergave: + type: string + description: Vriendelijke naam van de actie. + title: actie weergave + maxLength: 200 + resultaat: + type: integer + maximum: 599 + minimum: 100 + description: HTTP status code van de API response van de uitgevoerde handeling. + title: resultaat + hoofdObject: + type: string + format: uri + description: De URL naar het hoofdobject van een component. + title: hoofd object + maxLength: 1000 + resource: + type: string + description: Het type resource waarop de actie gebeurde. + title: resource + maxLength: 50 + resourceUrl: + type: string + format: uri + description: De URL naar het object. + title: resource url + maxLength: 1000 + toelichting: + type: string + description: Toelichting waarom de handeling is uitgevoerd. + title: toelichting + resourceWeergave: + type: string + description: Vriendelijke identificatie van het object. + title: resource weergave + maxLength: 200 + aanmaakdatum: + type: string + format: date-time + readOnly: true + description: De datum waarop de handeling is gedaan. + title: aanmaakdatum + wijzigingen: + allOf: + - $ref: '#/components/schemas/Wijzigingen' + title: wijzigingen + required: + - aanmaakdatum + - actie + - bron + - hoofdObject + - resource + - resourceUrl + - resourceWeergave + - resultaat + - wijzigingen + Besluit: + type: object + properties: + url: + type: string + format: uri + readOnly: true + title: url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + minLength: 1 + maxLength: 1000 + identificatie: + type: string + description: Identificatie van het besluit binnen de organisatie die het + besluit heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die + gegenereerd. + title: identificatie + maxLength: 50 + verantwoordelijkeOrganisatie: + type: string + description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie + die het besluit heeft vastgesteld. + title: verantwoordelijke organisatie + maxLength: 9 + besluittype: + type: string + format: uri + description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). + title: besluittype + maxLength: 200 + zaak: + type: string + format: uri + description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit + uitkomst is. + title: zaak + maxLength: 200 + datum: + type: string + format: date + description: De beslisdatum (AWB) van het besluit. + title: datum + toelichting: + type: string + description: Toelichting bij het besluit. + title: toelichting + bestuursorgaan: + type: string + description: Een orgaan van een rechtspersoon krachtens publiekrecht ingesteld + of een persoon of college, met enig openbaar gezag bekleed onder wiens + verantwoordelijkheid het besluit vastgesteld is. + title: bestuursorgaan + maxLength: 50 + ingangsdatum: + type: string + format: date + description: Ingangsdatum van de werkingsperiode van het besluit. + title: ingangsdatum + vervaldatum: + type: string + format: date + nullable: true + description: Datum waarop de werkingsperiode van het besluit eindigt. + title: vervaldatum + vervalreden: + description: |- + De omschrijving die aangeeft op grond waarvan het besluit is of komt te vervallen. + + Uitleg bij mogelijke waarden: + + * `tijdelijk` - Besluit met tijdelijke werking + * `ingetrokken_overheid` - Besluit ingetrokken door overheid + * `ingetrokken_belanghebbende` - Besluit ingetrokken o.v.v. belanghebbende + title: vervalreden + oneOf: + - $ref: '#/components/schemas/VervalredenEnum' + - $ref: '#/components/schemas/BlankEnum' + vervalredenWeergave: + type: string + readOnly: true + title: vervalredenWeergave + publicatiedatum: + type: string + format: date + nullable: true + description: Datum waarop het besluit gepubliceerd wordt. + title: publicatiedatum + verzenddatum: + type: string + format: date + nullable: true + description: Datum waarop het besluit verzonden is. + title: verzenddatum + uiterlijkeReactiedatum: + type: string + format: date + nullable: true + description: De datum tot wanneer verweer tegen het besluit mogelijk is. + title: uiterlijke reactiedatum + required: + - besluittype + - datum + - ingangsdatum + - url + - verantwoordelijkeOrganisatie + - vervalredenWeergave + BesluitInformatieObject: + type: object + properties: + url: + type: string + format: uri + readOnly: true + title: url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + minLength: 1 + maxLength: 1000 + informatieobject: + type: string + format: uri + description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten + API) waarin (een deel van) het besluit beschreven is. + title: informatieobject + maxLength: 1000 + besluit: + type: string + format: uri + description: URL-referentie naar het BESLUIT. + title: besluit + minLength: 1 + maxLength: 1000 + required: + - besluit + - informatieobject + - url + BlankEnum: + enum: + - '' + BronEnum: + enum: + - ac + - nrc + - zrc + - ztc + - drc + - brc + - cmc + - kc + - vrc + type: string + FieldValidationError: + type: object + description: Formaat van validatiefouten. + properties: + name: + type: string + description: Naam van het veld met ongeldige gegevens + title: name + code: + type: string + description: Systeemcode die het type fout aangeeft + title: code + reason: + type: string + description: Uitleg wat er precies fout is met de gegevens + title: reason + required: + - code + - name + - reason + Fout: + type: object + description: Formaat van HTTP 4xx en 5xx fouten. + properties: + type: + type: string + description: URI referentie naar het type fout, bedoeld voor developers + title: type + code: + type: string + description: Systeemcode die het type fout aangeeft + title: code + title: + type: string + description: Generieke titel voor het type fout + title: title + status: + type: integer + description: De HTTP status code + title: status + detail: + type: string + description: Extra informatie bij de fout, indien beschikbaar + title: detail + instance: + type: string + description: URI met referentie naar dit specifiek voorkomen van de fout. + Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld. + title: instance + required: + - code + - detail + - instance + - status + - title + PaginatedBesluitList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=4 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=2 + results: + type: array + items: + $ref: '#/components/schemas/Besluit' + PatchedBesluit: + type: object + properties: + url: + type: string + format: uri + readOnly: true + title: url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + minLength: 1 + maxLength: 1000 + identificatie: + type: string + description: Identificatie van het besluit binnen de organisatie die het + besluit heeft vastgesteld. Indien deze niet opgegeven is, dan wordt die + gegenereerd. + title: identificatie + maxLength: 50 + verantwoordelijkeOrganisatie: + type: string + description: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie + die het besluit heeft vastgesteld. + title: verantwoordelijke organisatie + maxLength: 9 + besluittype: + type: string + format: uri + description: URL-referentie naar het BESLUITTYPE (in de Catalogi API). + title: besluittype + maxLength: 200 + zaak: + type: string + format: uri + description: URL-referentie naar de ZAAK (in de Zaken API) waarvan dit besluit + uitkomst is. + title: zaak + maxLength: 200 + datum: + type: string + format: date + description: De beslisdatum (AWB) van het besluit. + title: datum + toelichting: + type: string + description: Toelichting bij het besluit. + title: toelichting + bestuursorgaan: + type: string + description: Een orgaan van een rechtspersoon krachtens publiekrecht ingesteld + of een persoon of college, met enig openbaar gezag bekleed onder wiens + verantwoordelijkheid het besluit vastgesteld is. + title: bestuursorgaan + maxLength: 50 + ingangsdatum: + type: string + format: date + description: Ingangsdatum van de werkingsperiode van het besluit. + title: ingangsdatum + vervaldatum: + type: string + format: date + nullable: true + description: Datum waarop de werkingsperiode van het besluit eindigt. + title: vervaldatum + vervalreden: + description: |- + De omschrijving die aangeeft op grond waarvan het besluit is of komt te vervallen. + + Uitleg bij mogelijke waarden: + + * `tijdelijk` - Besluit met tijdelijke werking + * `ingetrokken_overheid` - Besluit ingetrokken door overheid + * `ingetrokken_belanghebbende` - Besluit ingetrokken o.v.v. belanghebbende + title: vervalreden + oneOf: + - $ref: '#/components/schemas/VervalredenEnum' + - $ref: '#/components/schemas/BlankEnum' + vervalredenWeergave: + type: string + readOnly: true + title: vervalredenWeergave + publicatiedatum: + type: string + format: date + nullable: true + description: Datum waarop het besluit gepubliceerd wordt. + title: publicatiedatum + verzenddatum: + type: string + format: date + nullable: true + description: Datum waarop het besluit verzonden is. + title: verzenddatum + uiterlijkeReactiedatum: + type: string + format: date + nullable: true + description: De datum tot wanneer verweer tegen het besluit mogelijk is. + title: uiterlijke reactiedatum + ValidatieFout: + type: object + description: Formaat van HTTP 4xx en 5xx fouten. + properties: + type: + type: string + description: URI referentie naar het type fout, bedoeld voor developers + title: type + code: + type: string + description: Systeemcode die het type fout aangeeft + title: code + title: + type: string + description: Generieke titel voor het type fout + title: title + status: + type: integer + description: De HTTP status code + title: status + detail: + type: string + description: Extra informatie bij de fout, indien beschikbaar + title: detail + instance: + type: string + description: URI met referentie naar dit specifiek voorkomen van de fout. + Deze kan gebruikt worden in combinatie met server logs, bijvoorbeeld. + title: instance + invalidParams: + type: array + items: + $ref: '#/components/schemas/FieldValidationError' + title: invalidParams + required: + - code + - detail + - instance + - invalidParams + - status + - title + VervalredenEnum: + enum: + - tijdelijk + - ingetrokken_overheid + - ingetrokken_belanghebbende + type: string + Wijzigingen: + type: object + description: |- + Generate a serializer out of a GegevensGroepType. + + Usage:: + + >>> class VerlengingSerializer(GegevensGroepSerializer): + ... class Meta: + ... model = Zaak + ... gegevensgroep = 'verlenging' + >>> + + Where ``Zaak.verlenging`` is a :class:``GegevensGroepType``. + properties: + oud: + type: object + additionalProperties: {} + description: Volledige JSON body van het object zoals dat bestond voordat + de actie heeft plaatsgevonden. + title: oud + nieuw: + type: object + additionalProperties: {} + description: Volledige JSON body van het object na de actie. + title: nieuw + securitySchemes: + JWT-Claims: + type: http + bearerFormat: JWT + scheme: bearer +servers: +- url: https://besluiten-api.test.vng.cloud/api/v1 +tags: +- name: besluiten + description: Opvragen en bewerken van BESLUITen. +- name: besluitinformatieobjecten + description: Opvragen en bewerken van BESLUIT-INFORMATIEOBJECT relaties. diff --git a/src/brc/tests/test_notifications_kanaal.py b/src/brc/tests/test_notifications_kanaal.py index f9a3f27..9192662 100644 --- a/src/brc/tests/test_notifications_kanaal.py +++ b/src/brc/tests/test_notifications_kanaal.py @@ -1,32 +1,32 @@ from io import StringIO -from unittest.mock import patch +from unittest.mock import call, patch from django.core.management import call_command from django.test import override_settings +from notifications_api_common.kanalen import Kanaal from rest_framework.test import APITestCase -from vng_api_common.notifications.kanalen import Kanaal +from brc.api.tests.mixins import NotificationsConfigMixin from brc.datamodel.models import Besluit @override_settings(IS_HTTPS=True) -class CreateNotifKanaalTestCase(APITestCase): - @patch("zds_client.Client") +class CreateNotifKanaalTestCase(NotificationsConfigMixin, APITestCase): + @patch("notifications_api_common.models.NotificationsConfig.get_client") def test_kanaal_create_with_name(self, mock_client): """ Test is request to create kanaal is send with specified kanaal name """ - client = mock_client.from_url.return_value + client = mock_client.return_value client.list.return_value = [] # ensure this is added to the registry Kanaal(label="kanaal_test", main_resource=Besluit) stdout = StringIO() call_command( - "register_kanaal", - "kanaal_test", - notificaties_api_root="https://example.com/api/v1", + "register_kanalen", + kanalen=["kanaal_test"], stdout=stdout, ) @@ -39,29 +39,36 @@ def test_kanaal_create_with_name(self, mock_client): }, ) - @patch("zds_client.Client") - @override_settings(NOTIFICATIONS_KANAAL="dummy-kanaal") + @patch("notifications_api_common.models.NotificationsConfig.get_client") def test_kanaal_create_without_name(self, mock_client): """ Test is request to create kanaal is send with default kanaal name """ - client = mock_client.from_url.return_value + client = mock_client.return_value client.list.return_value = [] # ensure this is added to the registry Kanaal(label="dummy-kanaal", main_resource=Besluit) stdout = StringIO() - call_command( - "register_kanaal", - notificaties_api_root="https://example.com/api/v1", - stdout=stdout, - ) + call_command("register_kanalen", stdout=stdout) - client.create.assert_called_once_with( - "kanaal", - { - "naam": "dummy-kanaal", - "documentatieLink": "https://example.com/ref/kanalen/#dummy-kanaal", - "filters": [], - }, + client.create.assert_has_calls( + [ + call( + "kanaal", + { + "naam": "besluiten", + "documentatieLink": "https://example.com/ref/kanalen/#besluiten", + "filters": ["verantwoordelijke_organisatie", "besluittype"], + }, + ), + call( + "kanaal", + { + "naam": "dummy-kanaal", + "documentatieLink": "https://example.com/ref/kanalen/#dummy-kanaal", + "filters": [], + }, + ), + ] ) diff --git a/src/brc/tests/test_notifications_send.py b/src/brc/tests/test_notifications_send.py index aa4eac7..d5921c9 100644 --- a/src/brc/tests/test_notifications_send.py +++ b/src/brc/tests/test_notifications_send.py @@ -2,16 +2,17 @@ from django.test import override_settings +import requests_mock from django_capture_on_commit_callbacks import capture_on_commit_callbacks from freezegun import freeze_time from rest_framework import status from rest_framework.test import APITestCase from vng_api_common.tests import JWTAuthMixin, get_operation_url -from zds_client.tests.mocks import mock_client as _mock_client from brc.api.tests.mixins import MockSyncMixin from brc.datamodel.constants import VervalRedenen from brc.datamodel.tests.factories import BesluitFactory, BesluitInformatieObjectFactory +from brc.tests.utils import get_oas_spec BESLUITTYPE = "https://ztc.com/besluittypen/1234" @@ -26,7 +27,7 @@ class SendNotifTestCase(MockSyncMixin, JWTAuthMixin, APITestCase): @patch("vng_api_common.validators.fetcher") @patch("vng_api_common.validators.obj_has_shape", return_value=True) - @patch("zds_client.Client.from_url") + @patch("notifications_api_common.models.NotificationsConfig.get_client") def test_send_notif_create_besluit(self, mock_client, *mocks): """ Check if notifications will be send when Besluit is created @@ -65,18 +66,31 @@ def test_send_notif_create_besluit(self, mock_client, *mocks): }, ) - @patch("zds_client.Client.from_url") + @patch("notifications_api_common.models.NotificationsConfig.get_client") def test_send_notif_delete_resultaat(self, mock_client): """ Check if notifications will be send when resultaat is deleted """ client = mock_client.return_value besluit = BesluitFactory.create(besluittype=BESLUITTYPE) - besluit_url = get_operation_url("besluit_read", uuid=besluit.uuid) + besluit_url = get_operation_url("besluit_retrieve", uuid=besluit.uuid) bio = BesluitInformatieObjectFactory.create(besluit=besluit) - bio_url = get_operation_url("besluitinformatieobject_delete", uuid=bio.uuid) + bio_url = get_operation_url("besluitinformatieobject_destroy", uuid=bio.uuid) - with capture_on_commit_callbacks(execute=True): + with ( + capture_on_commit_callbacks(execute=True), + requests_mock.Mocker() as requests_mocker, + ): + requests_mocker.get( + f"{bio.informatieobject}schema/openapi.yaml?v=3", + content=get_oas_spec("brc"), + ) + requests_mocker.get( + bio.informatieobject, + json={ + "identificatie": "Test identificatie", + }, + ) response = self.client.delete(bio_url) self.assertEqual( diff --git a/src/brc/tests/test_sync_besluit.py b/src/brc/tests/test_sync_besluit.py index 6ce7d8d..a93bbc7 100644 --- a/src/brc/tests/test_sync_besluit.py +++ b/src/brc/tests/test_sync_besluit.py @@ -63,7 +63,7 @@ def test_delete_sync_besluit(self): besluit = BesluitFactory.create( _zaakbesluit="https://example.com/zrc/zaakbesluittype/abcd" ) - url = get_operation_url("besluit_read", uuid=besluit.uuid) + url = get_operation_url("besluit_retrieve", uuid=besluit.uuid) response = self.client.delete(url) diff --git a/src/brc/tests/test_userstory_349.py b/src/brc/tests/test_userstory_349.py index 7356f57..ce2b999 100644 --- a/src/brc/tests/test_userstory_349.py +++ b/src/brc/tests/test_userstory_349.py @@ -24,7 +24,7 @@ def test_delete_besluit_cascades_properly(self): """ besluit = BesluitFactory.create(besluittype=BESLUITTYPE) BesluitInformatieObjectFactory.create(besluit=besluit) - besluit_delete_url = get_operation_url("besluit_delete", uuid=besluit.uuid) + besluit_delete_url = get_operation_url("besluit_destroy", uuid=besluit.uuid) response = self.client.delete(besluit_delete_url) diff --git a/src/brc/tests/utils.py b/src/brc/tests/utils.py new file mode 100644 index 0000000..8e4bdfd --- /dev/null +++ b/src/brc/tests/utils.py @@ -0,0 +1,15 @@ +import os + +from django.conf import settings + + +def get_oas_spec(service): + spec_dirs = settings.TEST_SPEC_DIRS + + try: + filepath = next((os.path.join(path, f"{service}.yaml") for path in spec_dirs)) + except StopIteration: + raise IOError(f"OAS for {service} not found") + + with open(filepath, "rb") as oas_spec: + return oas_spec.read()