diff --git a/requirements/base.in b/requirements/base.in
index d034caf7..6fcdf26e 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -27,8 +27,8 @@ django-better-admin-arrayfield
djangorestframework
django-filter~=21.1
djangorestframework-camel-case
-drf-yasg
-vng-api-common
+drf_spectacular
+vng_api_common==1.11.0
drf-flex-fields
django-cors-middleware
diff --git a/requirements/base.txt b/requirements/base.txt
index 5d932a67..130b245e 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -12,6 +12,8 @@ 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
billiard==3.6.4.0
@@ -23,7 +25,11 @@ build==0.8.0
celery==5.2.7
# via -r requirements/base.in
certifi==2022.6.15
- # via requests
+ # via
+ # django-simple-certmanager
+ # requests
+cffi==1.15.1
+ # via cryptography
charset-normalizer==2.1.0
# via requests
click==8.1.3
@@ -39,12 +45,12 @@ click-plugins==1.1.1
# via celery
click-repl==0.2.0
# via celery
-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.14
@@ -56,15 +62,20 @@ django==3.2.14
# django-filter
# django-hijack
# django-markup
+ # django-privates
# django-redis
# django-relativedelta
# django-rest-framework-condition
# django-rosetta
+ # django-sendfile2
+ # django-simple-certmanager
# django-solo
# djangorestframework
# drf-nested-routers
- # drf-yasg
+ # drf-spectacular
+ # notifications-api-common
# vng-api-common
+ # zgw-consumers
django-admin-index==2.0.2
# via -r requirements/base.in
django-axes==5.36.0
@@ -74,7 +85,9 @@ django-better-admin-arrayfield==1.4.2
django-choices==1.7.2
# via
# -r requirements/base.in
+ # django-simple-certmanager
# vng-api-common
+ # zgw-consumers
django-compat==1.0.15
# via django-hijack-admin
django-cors-middleware==1.5.0
@@ -95,25 +108,38 @@ django-markup[all_filter_dependencies]==1.5
# via -r requirements/base.in
django-ordered-model==3.6
# via django-admin-index
+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 -r requirements/base.in
+ # via
+ # -r requirements/base.in
+ # zgw-consumers
django-rest-framework-condition==0.1.1
# via vng-api-common
django-rosetta==0.9.8
# via -r requirements/base.in
+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
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
# -r requirements/base.in
+ # notifications-api-common
# vng-api-common
docutils==0.17.1
# via
@@ -125,14 +151,19 @@ drf-flex-fields==0.9.8
# via -r requirements/base.in
drf-nested-routers==0.93.4
# via vng-api-common
-drf-writable-nested==0.6.4
- # via -r requirements/base.in
-drf-yasg==1.21.3
+drf-spectacular==0.24.2
# via
# -r requirements/base.in
# vng-api-common
+drf-writable-nested==0.6.4
+ # via -r requirements/base.in
+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
html5lib==1.1
# via textile
idna==3.3
@@ -144,17 +175,15 @@ 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
kombu==5.2.4
# via celery
markdown==3.4.1
@@ -163,12 +192,13 @@ markdown==3.4.1
# django-markup
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
# build
- # drf-yasg
# redis
# sphinx
pep517==0.12.0
@@ -183,6 +213,8 @@ prompt-toolkit==3.0.30
# via click-repl
psycopg2==2.9.3
# via -r requirements/base.in
+pycparser==2.21
+ # via cffi
pygments==2.12.0
# via
# django-markup
@@ -191,14 +223,21 @@ pyjwt==2.4.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-creole==1.4.10
# via django-markup
python-dateutil==2.8.2
# via
# -r requirements/base.in
# django-relativedelta
+ # faker
python-dotenv==0.20.0
# via -r requirements/base.in
pytz==2022.1
@@ -207,9 +246,9 @@ pytz==2022.1
# babel
# celery
# django
- # drf-yasg
pyyaml==6.0
# via
+ # drf-spectacular
# gemma-zds-client
# oyaml
# vng-api-common
@@ -221,15 +260,14 @@ regex==2022.7.25
# via textile
requests==2.28.1
# via
- # coreapi
# django-rosetta
# 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
# bleach
@@ -239,6 +277,7 @@ six==1.16.0
# html5lib
# isodate
# python-dateutil
+ # requests-mock
smartypants==2.0.1
# via django-markup
snowballstemmer==2.2.0
@@ -270,9 +309,7 @@ tomli==2.0.1
# build
# pep517
uritemplate==4.1.1
- # via
- # coreapi
- # drf-yasg
+ # via drf-spectacular
urllib3==1.26.10
# via requests
uwsgi==2.0.20
@@ -282,7 +319,7 @@ vine==5.0.0
# amqp
# celery
# kombu
-vng-api-common==1.7.8
+vng-api-common==1.11.0
# via -r requirements/base.in
wcwidth==0.2.5
# via prompt-toolkit
@@ -294,6 +331,8 @@ wheel==0.37.1
# via pip-tools
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 f836bb2c..fad494b0 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -22,6 +22,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
@@ -30,7 +34,7 @@ billiard==3.6.4.0
# via
# -r requirements/base.txt
# celery
-black==22.6.0
+black==22.10.0
# via -r requirements/testing.in
bleach==5.0.1
# via
@@ -45,7 +49,12 @@ celery==5.2.7
certifi==2022.6.15
# via
# -r requirements/base.txt
+ # django-simple-certmanager
# requests
+cffi==1.15.1
+ # via
+ # -r requirements/base.txt
+ # cryptography
charset-normalizer==2.1.0
# via
# -r requirements/base.txt
@@ -73,19 +82,19 @@ click-repl==0.2.0
# celery
codecov==2.1.12
# via -r requirements/ci.in
-coreapi==2.3.3
+coverage==6.5.0
# via
- # -r requirements/base.txt
- # drf-yasg
-coreschema==0.0.4
+ # -r requirements/ci.in
+ # codecov
+cryptography==38.0.1
# via
# -r requirements/base.txt
- # coreapi
- # drf-yasg
-coverage==6.4.2
+ # cryptograpy
+ # pyopenssl
+cryptograpy==0.0.0
# via
- # -r requirements/ci.in
- # codecov
+ # -r requirements/base.txt
+ # django-simple-certmanager
deprecated==1.2.13
# via
# -r requirements/base.txt
@@ -99,15 +108,20 @@ django==3.2.14
# django-filter
# django-hijack
# django-markup
+ # django-privates
# django-redis
# django-relativedelta
# django-rest-framework-condition
# django-rosetta
+ # django-sendfile2
+ # django-simple-certmanager
# django-solo
# djangorestframework
# drf-nested-routers
- # drf-yasg
+ # drf-spectacular
+ # notifications-api-common
# vng-api-common
+ # zgw-consumers
django-admin-index==2.0.2
# via -r requirements/base.txt
django-axes==5.36.0
@@ -117,7 +131,9 @@ django-better-admin-arrayfield==1.4.2
django-choices==1.7.2
# via
# -r requirements/base.txt
+ # django-simple-certmanager
# vng-api-common
+ # zgw-consumers
django-compat==1.0.15
# via
# -r requirements/base.txt
@@ -144,29 +160,47 @@ django-ordered-model==3.6
# via
# -r requirements/base.txt
# django-admin-index
+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
+ # via
+ # -r requirements/base.txt
+ # zgw-consumers
django-rest-framework-condition==0.1.1
# via
# -r requirements/base.txt
# vng-api-common
django-rosetta==0.9.8
# via -r requirements/base.txt
+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
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
@@ -181,22 +215,27 @@ drf-nested-routers==0.93.4
# via
# -r requirements/base.txt
# vng-api-common
-drf-writable-nested==0.6.4
- # via -r requirements/base.txt
-drf-yasg==1.21.3
+drf-spectacular==0.24.2
# via
# -r requirements/base.txt
# vng-api-common
+drf-writable-nested==0.6.4
+ # via -r requirements/base.txt
factory-boy==3.2.1
# via -r requirements/testing.in
-faker==13.15.0
- # via factory-boy
-freezegun==1.2.1
+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
html5lib==1.1
# via
# -r requirements/base.txt
@@ -217,7 +256,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
@@ -230,15 +269,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
kombu==5.2.4
# via
# -r requirements/base.txt
@@ -257,6 +295,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
@@ -265,10 +307,9 @@ packaging==21.3
# via
# -r requirements/base.txt
# build
- # drf-yasg
# redis
# sphinx
-pathspec==0.9.0
+pathspec==0.10.1
# via black
pep517==0.12.0
# via
@@ -292,6 +333,10 @@ prompt-toolkit==3.0.30
# click-repl
psycopg2==2.9.3
# via -r requirements/base.txt
+pycparser==2.21
+ # via
+ # -r requirements/base.txt
+ # cffi
pygments==2.12.0
# via
# -r requirements/base.txt
@@ -304,10 +349,19 @@ pyjwt==2.4.0
# vng-api-common
pylint==1.9.2
# 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-creole==1.4.10
# via
# -r requirements/base.txt
@@ -326,10 +380,10 @@ pytz==2022.1
# babel
# celery
# django
- # drf-yasg
pyyaml==6.0
# via
# -r requirements/base.txt
+ # drf-spectacular
# gemma-zds-client
# oyaml
# vng-api-common
@@ -347,22 +401,17 @@ requests==2.28.1
# via
# -r requirements/base.txt
# codecov
- # coreapi
# django-rosetta
# gemma-zds-client
# requests-mock
# sphinx
# vng-api-common
-requests-mock==1.9.3
- # via -r requirements/testing.in
-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
+ # -r requirements/testing.in
+ # zgw-consumers
six==1.16.0
# via
# -r requirements/base.txt
@@ -430,13 +479,12 @@ tomli==2.0.1
# black
# build
# pep517
-typing-extensions==4.3.0
+typing-extensions==4.4.0
# via black
uritemplate==4.1.1
# via
# -r requirements/base.txt
- # coreapi
- # drf-yasg
+ # drf-spectacular
urllib3==1.26.10
# via
# -r requirements/base.txt
@@ -449,7 +497,7 @@ vine==5.0.0
# amqp
# celery
# kombu
-vng-api-common==1.7.8
+vng-api-common==1.11.0
# via -r requirements/base.txt
wcwidth==0.2.5
# via
@@ -469,6 +517,10 @@ wrapt==1.14.1
# -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 53d80f2b..199b2f38 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -22,6 +22,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
@@ -30,7 +34,7 @@ billiard==3.6.4.0
# via
# -r requirements/base.txt
# celery
-black==22.6.0
+black==22.10.0
# via -r requirements/testing.in
bleach==5.0.1
# via
@@ -47,7 +51,12 @@ celery==5.2.7
certifi==2022.6.15
# via
# -r requirements/base.txt
+ # django-simple-certmanager
# requests
+cffi==1.15.1
+ # via
+ # -r requirements/base.txt
+ # cryptography
charset-normalizer==2.1.0
# via
# -r requirements/base.txt
@@ -73,15 +82,15 @@ click-repl==0.2.0
# via
# -r requirements/base.txt
# celery
-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
@@ -97,15 +106,20 @@ django==3.2.14
# django-filter
# django-hijack
# django-markup
+ # django-privates
# django-redis
# django-relativedelta
# django-rest-framework-condition
# django-rosetta
+ # django-sendfile2
+ # django-simple-certmanager
# django-solo
# djangorestframework
# drf-nested-routers
- # drf-yasg
+ # drf-spectacular
+ # notifications-api-common
# vng-api-common
+ # zgw-consumers
django-admin-index==2.0.2
# via -r requirements/base.txt
django-axes==5.36.0
@@ -115,16 +129,18 @@ django-better-admin-arrayfield==1.4.2
django-choices==1.7.2
# via
# -r requirements/base.txt
+ # django-simple-certmanager
# vng-api-common
+ # zgw-consumers
django-compat==1.0.15
# via
# -r requirements/base.txt
# django-hijack-admin
django-cors-middleware==1.5.0
# via -r requirements/base.txt
-django-debug-toolbar==3.5.0
+django-debug-toolbar==3.7.0
# via -r requirements/dev.in
-django-extensions==3.2.0
+django-extensions==3.2.1
# via -r requirements/dev.in
django-filter==21.1
# via
@@ -146,29 +162,47 @@ django-ordered-model==3.6
# via
# -r requirements/base.txt
# django-admin-index
+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
+ # via
+ # -r requirements/base.txt
+ # zgw-consumers
django-rest-framework-condition==0.1.1
# via
# -r requirements/base.txt
# vng-api-common
django-rosetta==0.9.8
# via -r requirements/base.txt
+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
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
@@ -183,29 +217,34 @@ drf-nested-routers==0.93.4
# via
# -r requirements/base.txt
# vng-api-common
-drf-writable-nested==0.6.4
- # via -r requirements/base.txt
-drf-yasg==1.21.3
+drf-spectacular==0.24.2
# via
# -r requirements/base.txt
# vng-api-common
+drf-writable-nested==0.6.4
+ # via -r requirements/base.txt
factory-boy==3.2.1
# via -r requirements/testing.in
-faker==13.15.0
- # via factory-boy
-flower==1.1.0
+faker==15.1.1
+ # via
+ # -r requirements/base.txt
+ # factory-boy
+ # zgw-consumers
+flower==1.2.0
# via -r requirements/dev.in
-freezegun==1.2.1
+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
html5lib==1.1
# via
# -r requirements/base.txt
# textile
-humanize==4.2.3
+humanize==4.4.0
# via flower
idna==3.3
# via
@@ -223,7 +262,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
@@ -236,15 +275,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
kombu==5.2.4
# via
# -r requirements/base.txt
@@ -263,6 +301,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
@@ -271,10 +313,9 @@ packaging==21.3
# via
# -r requirements/base.txt
# build
- # drf-yasg
# redis
# sphinx
-pathspec==0.9.0
+pathspec==0.10.1
# via black
pep517==0.12.0
# via
@@ -292,7 +333,7 @@ polib==1.1.1
# via
# -r requirements/base.txt
# django-rosetta
-prometheus-client==0.14.1
+prometheus-client==0.15.0
# via flower
prompt-toolkit==3.0.30
# via
@@ -300,6 +341,10 @@ prompt-toolkit==3.0.30
# click-repl
psycopg2==2.9.3
# via -r requirements/base.txt
+pycparser==2.21
+ # via
+ # -r requirements/base.txt
+ # cffi
pygments==2.12.0
# via
# -r requirements/base.txt
@@ -312,10 +357,19 @@ pyjwt==2.4.0
# vng-api-common
pylint==1.9.2
# 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-creole==1.4.10
# via
# -r requirements/base.txt
@@ -334,11 +388,11 @@ pytz==2022.1
# babel
# celery
# django
- # drf-yasg
# flower
pyyaml==6.0
# via
# -r requirements/base.txt
+ # drf-spectacular
# gemma-zds-client
# oyaml
# vng-api-common
@@ -355,22 +409,17 @@ regex==2022.7.25
requests==2.28.1
# via
# -r requirements/base.txt
- # coreapi
# django-rosetta
# gemma-zds-client
# requests-mock
# sphinx
# vng-api-common
-requests-mock==1.9.3
- # via -r requirements/testing.in
-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
+ # -r requirements/testing.in
+ # zgw-consumers
six==1.16.0
# via
# -r requirements/base.txt
@@ -441,13 +490,12 @@ tomli==2.0.1
# pep517
tornado==6.2
# via flower
-typing-extensions==4.3.0
+typing-extensions==4.4.0
# via black
uritemplate==4.1.1
# via
# -r requirements/base.txt
- # coreapi
- # drf-yasg
+ # drf-spectacular
urllib3==1.26.10
# via
# -r requirements/base.txt
@@ -460,7 +508,7 @@ vine==5.0.0
# amqp
# celery
# kombu
-vng-api-common==1.7.8
+vng-api-common==1.11.0
# via -r requirements/base.txt
wcwidth==0.2.5
# via
@@ -480,6 +528,10 @@ wrapt==1.14.1
# -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 4626fb16..b8230a92 100644
--- a/requirements/production.txt
+++ b/requirements/production.txt
@@ -20,6 +20,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
@@ -41,7 +45,12 @@ celery==5.2.7
certifi==2022.6.15
# via
# -r requirements/base.txt
+ # django-simple-certmanager
# requests
+cffi==1.15.1
+ # via
+ # -r requirements/base.txt
+ # cryptography
charset-normalizer==2.1.0
# via
# -r requirements/base.txt
@@ -66,15 +75,15 @@ click-repl==0.2.0
# via
# -r requirements/base.txt
# celery
-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
@@ -88,15 +97,20 @@ django==3.2.14
# django-filter
# django-hijack
# django-markup
+ # django-privates
# django-redis
# django-relativedelta
# django-rest-framework-condition
# django-rosetta
+ # django-sendfile2
+ # django-simple-certmanager
# django-solo
# djangorestframework
# drf-nested-routers
- # drf-yasg
+ # drf-spectacular
+ # notifications-api-common
# vng-api-common
+ # zgw-consumers
django-admin-index==2.0.2
# via -r requirements/base.txt
django-axes==5.36.0
@@ -106,7 +120,9 @@ django-better-admin-arrayfield==1.4.2
django-choices==1.7.2
# via
# -r requirements/base.txt
+ # django-simple-certmanager
# vng-api-common
+ # zgw-consumers
django-compat==1.0.15
# via
# -r requirements/base.txt
@@ -133,29 +149,47 @@ django-ordered-model==3.6
# via
# -r requirements/base.txt
# django-admin-index
+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
+ # via
+ # -r requirements/base.txt
+ # zgw-consumers
django-rest-framework-condition==0.1.1
# via
# -r requirements/base.txt
# vng-api-common
django-rosetta==0.9.8
# via -r requirements/base.txt
+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
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
@@ -170,16 +204,22 @@ drf-nested-routers==0.93.4
# via
# -r requirements/base.txt
# vng-api-common
+drf-spectacular==0.24.2
+ # via
+ # -r requirements/base.txt
+ # vng-api-common
drf-writable-nested==0.6.4
# via -r requirements/base.txt
-drf-yasg==1.21.3
+faker==15.1.1
# via
# -r requirements/base.txt
- # vng-api-common
+ # zgw-consumers
gemma-zds-client==1.0.1
# via
# -r requirements/base.txt
+ # notifications-api-common
# vng-api-common
+ # zgw-consumers
html5lib==1.1
# via
# -r requirements/base.txt
@@ -200,7 +240,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
@@ -209,15 +249,14 @@ 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
kombu==5.2.4
# via
# -r requirements/base.txt
@@ -230,6 +269,10 @@ 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
@@ -238,7 +281,6 @@ packaging==21.3
# via
# -r requirements/base.txt
# build
- # drf-yasg
# redis
# sphinx
pep517==0.12.0
@@ -259,6 +301,10 @@ prompt-toolkit==3.0.30
# click-repl
psycopg2==2.9.3
# via -r requirements/base.txt
+pycparser==2.21
+ # via
+ # -r requirements/base.txt
+ # cffi
pygments==2.12.0
# via
# -r requirements/base.txt
@@ -269,10 +315,19 @@ pyjwt==2.4.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-creole==1.4.10
# via
# -r requirements/base.txt
@@ -281,6 +336,7 @@ python-dateutil==2.8.2
# via
# -r requirements/base.txt
# django-relativedelta
+ # faker
python-dotenv==0.20.0
# via -r requirements/base.txt
pytz==2022.1
@@ -289,10 +345,10 @@ pytz==2022.1
# babel
# celery
# django
- # drf-yasg
pyyaml==6.0
# via
# -r requirements/base.txt
+ # drf-spectacular
# gemma-zds-client
# oyaml
# vng-api-common
@@ -309,19 +365,16 @@ regex==2022.7.25
requests==2.28.1
# via
# -r requirements/base.txt
- # coreapi
# django-rosetta
# 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
@@ -332,6 +385,7 @@ six==1.16.0
# html5lib
# isodate
# python-dateutil
+ # requests-mock
smartypants==2.0.1
# via
# -r requirements/base.txt
@@ -386,8 +440,7 @@ tomli==2.0.1
uritemplate==4.1.1
# via
# -r requirements/base.txt
- # coreapi
- # drf-yasg
+ # drf-spectacular
urllib3==1.26.10
# via
# -r requirements/base.txt
@@ -400,7 +453,7 @@ vine==5.0.0
# amqp
# celery
# kombu
-vng-api-common==1.7.8
+vng-api-common==1.11.0
# via -r requirements/base.txt
wcwidth==0.2.5
# via
@@ -419,6 +472,10 @@ 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/nrc/api/apps.py b/src/nrc/api/apps.py
new file mode 100644
index 00000000..341082e3
--- /dev/null
+++ b/src/nrc/api/apps.py
@@ -0,0 +1,13 @@
+from django.apps import AppConfig
+
+from vng_api_common.api import register_extensions
+
+
+class ZRCApiConfig(AppConfig):
+ name = "nrc.api"
+
+ def ready(self):
+ register_extensions()
+
+ # ensure that the metaclass for every viewset has run
+ from . import viewsets # noqa
diff --git a/src/nrc/api/schema.py b/src/nrc/api/schema.py
index fd2ebfbd..146e4159 100644
--- a/src/nrc/api/schema.py
+++ b/src/nrc/api/schema.py
@@ -1,8 +1,14 @@
from django.conf import settings
-from drf_yasg import openapi
-
-description = f"""
+__all__ = [
+ "TITLE",
+ "DESCRIPTION",
+ "CONTACT",
+ "LICENSE",
+ "VERSION",
+]
+TITLE = f"{settings.PROJECT_NAME} API"
+DESCRIPTION = f"""
The API consists of three parts:
1. **Publishing events (resource Events)**
The events resource is based on the [GOV NL profile for CloudEvents](https://vng-realisatie.github.io/NL-GOV-profile-for-CloudEvents).
This specification only contains brief descriptions of the attributes of the event. Please refer to the GOV NL profile for additional information.
@@ -13,11 +19,9 @@
This specification is work in progress. It can be changed completely without notice.
"""
-info = openapi.Info(
- title=f"{settings.PROJECT_NAME} API",
- default_version=settings.API_VERSION,
- description=description,
- 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/nrc/api/tests/test_domains.py b/src/nrc/api/tests/test_domains.py
index 290af1a7..88c20306 100644
--- a/src/nrc/api/tests/test_domains.py
+++ b/src/nrc/api/tests/test_domains.py
@@ -43,7 +43,7 @@ def test_domain_retrieve(self):
"""
domain = DomainFactory()
- url = get_operation_url("domain_read", uuid=domain.uuid)
+ url = get_operation_url("domain_retrieve", uuid=domain.uuid)
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -186,7 +186,7 @@ def test_destroy_domain(self):
delete existent domain
"""
domain = DomainFactory.create()
- domain_delete_url = get_operation_url("domain_delete", uuid=domain.uuid)
+ domain_delete_url = get_operation_url("domain_destroy", uuid=domain.uuid)
response = self.client.delete(domain_delete_url)
diff --git a/src/nrc/api/tests/test_dso_api_strategy.py b/src/nrc/api/tests/test_dso_api_strategy.py
index a9ca8255..a5e6f98e 100644
--- a/src/nrc/api/tests/test_dso_api_strategy.py
+++ b/src/nrc/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/nrc/api/tests/test_scopes.py b/src/nrc/api/tests/test_scopes.py
index d3f1b924..3b43c31e 100644
--- a/src/nrc/api/tests/test_scopes.py
+++ b/src/nrc/api/tests/test_scopes.py
@@ -67,7 +67,7 @@ def test_correct_scope_read(self):
self.autorisatie.save()
domain = DomainFactory()
- url = get_operation_url("domain_read", uuid=domain.uuid)
+ url = get_operation_url("domain_retrieve", uuid=domain.uuid)
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -81,7 +81,7 @@ def test_incorrect_scope_read(self):
self.autorisatie.save()
domain = DomainFactory()
- url = get_operation_url("domain_read", uuid=domain.uuid)
+ url = get_operation_url("domain_retrieve", uuid=domain.uuid)
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN, response.data)
@@ -95,7 +95,7 @@ def test_correct_scope_delete(self):
self.autorisatie.save()
domain = DomainFactory()
- url = get_operation_url("domain_delete", uuid=domain.uuid)
+ url = get_operation_url("domain_destroy", uuid=domain.uuid)
response = self.client.delete(url)
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
@@ -109,7 +109,7 @@ def test_incorrect_scope_delete(self):
self.autorisatie.save()
domain = DomainFactory()
- url = get_operation_url("domain_read", uuid=domain.uuid)
+ url = get_operation_url("domain_retrieve", uuid=domain.uuid)
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN, response.data)
@@ -264,7 +264,7 @@ def test_correct_scope_delete(self):
subscription = SubscriptionFactory.create()
subscription_url = get_operation_url(
- "subscription_delete", uuid=subscription.uuid
+ "subscription_destroy", uuid=subscription.uuid
)
response = self.client.delete(subscription_url)
@@ -283,7 +283,7 @@ def test_incorrect_scope_delete(self):
subscription = SubscriptionFactory.create()
subscription_url = get_operation_url(
- "subscription_delete", uuid=subscription.uuid
+ "subscription_destroy", uuid=subscription.uuid
)
response = self.client.delete(subscription_url)
diff --git a/src/nrc/api/tests/test_subscriptions.py b/src/nrc/api/tests/test_subscriptions.py
index e24d87bc..15a6129c 100644
--- a/src/nrc/api/tests/test_subscriptions.py
+++ b/src/nrc/api/tests/test_subscriptions.py
@@ -227,7 +227,7 @@ def test_subscription_destroy(self):
"""
subscription = SubscriptionFactory.create()
subscription_url = get_operation_url(
- "subscription_read", uuid=subscription.uuid
+ "subscription_retrieve", uuid=subscription.uuid
)
response = self.client.delete(subscription_url)
diff --git a/src/nrc/api/urls.py b/src/nrc/api/urls.py
index 0af860dc..d7fe1416 100644
--- a/src/nrc/api/urls.py
+++ b/src/nrc/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 DomainViewSet, EventAPIView, SubscriptionViewSet
@@ -18,13 +18,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/nrc/api/viewsets.py b/src/nrc/api/viewsets.py
index 02f9eb01..53d18467 100644
--- a/src/nrc/api/viewsets.py
+++ b/src/nrc/api/viewsets.py
@@ -1,6 +1,8 @@
import logging
-from drf_yasg.utils import swagger_auto_schema
+from django.utils.translation import gettext as _
+
+from drf_spectacular.utils import extend_schema, extend_schema_view
from rest_framework import mixins, status, views, viewsets
from rest_framework.parsers import JSONParser
from rest_framework.renderers import JSONRenderer
@@ -31,6 +33,23 @@
logger = logging.getLogger(__name__)
+@extend_schema_view(
+ list=extend_schema(
+ summary=_("Returns a list with information about all subscriptions."),
+ ),
+ retrieve=extend_schema(
+ summary=_("Returns information about the specified subscription."),
+ ),
+ create=extend_schema(
+ summary=_("Subscribe to receive events."),
+ ),
+ update=extend_schema(
+ summary=_("Update the specified subscription by replacing all properties."),
+ ),
+ destroy=extend_schema(
+ summary=_("Delete the specified subscription."),
+ ),
+)
class SubscriptionViewSet(
CheckQueryParamsMixin,
mixins.CreateModelMixin,
@@ -40,26 +59,6 @@ class SubscriptionViewSet(
mixins.RetrieveModelMixin,
viewsets.GenericViewSet,
):
- """
- list:
- Returns a list with information about all subscriptions.
-
- create:
- Subscribe to receive events.
-
- retrieve:
- Returns information about the specified subscription.
-
- update:
- Update the specified subscription by replacing all properties.
-
- partial_update:
- Update the specified subscription by replacing the modified properties.
-
- destroy:
- Delete the specified subscription.
- """
-
queryset = Subscription.objects.all()
serializer_class = SubscriptionSerializer
lookup_field = "uuid"
@@ -75,6 +74,19 @@ class SubscriptionViewSet(
parser_classes = (SubscriptionParser,)
+@extend_schema_view(
+ list=extend_schema(
+ summary=_("Returns a list with information about all domains."),
+ ),
+ retrieve=extend_schema(
+ summary=_("Returns information about the specified domain."),
+ ),
+ create=extend_schema(
+ summary=_(
+ "Defines a new domain with its basis properties and filter attributes."
+ ),
+ ),
+)
class DomainViewSet(
CheckQueryParamsMixin,
mixins.CreateModelMixin,
@@ -84,26 +96,6 @@ class DomainViewSet(
mixins.RetrieveModelMixin,
viewsets.GenericViewSet,
):
- """
- list:
- Returns a list with information about all domains.
-
- create:
- Defines a new domain with its basis properties and filter attributes.
-
- update:
- Update the specified domain by replacing all properties.
-
- partial_update:
- Update the specified domain by replacing the modified properties.
-
- retrieve:
- Returns information about the specified domain.
-
- destroy:
- Delete the specified domain.
- """
-
queryset = Domain.objects.all()
serializer_class = DomainSerializer
filterset_class = DomainFilter
@@ -119,21 +111,20 @@ class DomainViewSet(
class EventAPIView(views.APIView):
- """
- Publish an event.
-
- The component will distribute the event to the subscribers when the criteria
- of a subscription are met.
- """
-
+ global_description = _(
+ "Publish an event "
+ "The component will distribute the event to the subscribers when the criteria"
+ "of a subscription are met."
+ )
required_scopes = {"create": SCOPE_EVENTS_PUBLISH}
# Exposed action of the view used by the vng_api_common
action = "create"
+ serializer_class = EventSerializer
parser_classes = (JSONParser,)
renderer_classes = (JSONRenderer,)
- @swagger_auto_schema(request_body=EventSerializer, responses={200: EventSerializer})
+ @extend_schema(responses={200: EventSerializer}, request=EventSerializer)
def create(self, request, *args, **kwargs):
return self.post(request, *args, **kwargs)
diff --git a/src/nrc/conf/api.py b/src/nrc/conf/api.py
index 72e6e704..5c63c482 100644
--- a/src/nrc/conf/api.py
+++ b/src/nrc/conf/api.py
@@ -4,34 +4,25 @@
API_VERSION = "2.0.0-alpha13"
+DOCUMENTATION_INFO_MODULE = "nrc.api.schema"
+
REST_FRAMEWORK = BASE_REST_FRAMEWORK.copy()
REST_FRAMEWORK.update(
{"DEFAULT_PERMISSION_CLASSES": ("vng_api_common.permissions.AuthScopesRequired",)}
)
-SECURITY_DEFINITION_NAME = "JWT-Claims"
-
-SWAGGER_SETTINGS = BASE_SWAGGER_SETTINGS.copy()
-SWAGGER_SETTINGS.update(
+SPECTACULAR_SETTINGS = BASE_SPECTACULAR_SETTINGS.copy()
+SPECTACULAR_SETTINGS.update(
{
- "DEFAULT_INFO": "nrc.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://notificaties-api.test.vng.cloud/api/v1"}],
}
)
-
+SPECTACULAR_EXTENSIONS = [
+ "vng_api_common.extensions.fields.hyperlink_identity.HyperlinkedIdentityFieldExtension",
+ "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"
TEST_CALLBACK_AUTH = True
diff --git a/src/nrc/conf/base.py b/src/nrc/conf/base.py
index e1621afd..c0bdb0e7 100644
--- a/src/nrc/conf/base.py
+++ b/src/nrc/conf/base.py
@@ -65,11 +65,14 @@
"vng_api_common", # before drf_yasg to override the management command
"vng_api_common.authorizations",
"vng_api_common.notifications",
- "drf_yasg",
+ "drf_spectacular",
"rest_framework",
"django_markup",
"django_better_admin_arrayfield",
"solo",
+ "simple_certmanager",
+ "zgw_consumers",
+ "notifications_api_common",
# Project applications.
"nrc.accounts",
"nrc.api",
diff --git a/src/openapi.yaml b/src/openapi.yaml
index f5aeae46..d828848f 100644
--- a/src/openapi.yaml
+++ b/src/openapi.yaml
@@ -1,39 +1,42 @@
-openapi: 3.0.0
+openapi: 3.0.3
info:
title: Notification API
- description: "\nThe API consists of three parts:\n 1. **Publishing events (resource\
- \ Events)**
The events resource is based on the [GOV NL profile for CloudEvents](https://vng-realisatie.github.io/NL-GOV-profile-for-CloudEvents).\n\
- \ This specification only contains brief descriptions of the attributes of\
- \ the event. Please refer to the GOV NL profile for additional information.\n\
- \ 2. **Subscribing to receive events (resource Subscriptions)**
\n The\
- \ subscription resource was derived from the [CloudEvents Subscription v1.0.0-wip](https://github.com/cloudevents/spec/tree/main/subscriptions).\n\
- \ This specification only contains brief descriptions of the attributes of\
- \ the subscription. Please refer to the draft CE Subscription Specification for\
- \ additional information.\n 3. **Basic information about domains (resource\
- \ Domains)**
The scopes for autorisation are described [here](https://github.com/VNG-Realisatie/notificatieservices/blob/main/docs/api-specification/scopes.md).\n\
- \ This specification is work in progress. It can be changed completely without\
- \ notice.\n"
+ version: 2.0.0-alpha13
+ description: |2
+
+ The API consists of three parts:
+ 1. **Publishing events (resource Events)**
The events resource is based on the [GOV NL profile for CloudEvents](https://vng-realisatie.github.io/NL-GOV-profile-for-CloudEvents).
+ This specification only contains brief descriptions of the attributes of the event. Please refer to the GOV NL profile for additional information.
+ 2. **Subscribing to receive events (resource Subscriptions)**
+ The subscription resource was derived from the [CloudEvents Subscription v1.0.0-wip](https://github.com/cloudevents/spec/tree/main/subscriptions).
+ This specification only contains brief descriptions of the attributes of the subscription. Please refer to the draft CE Subscription Specification for additional information.
+ 3. **Basic information about domains (resource Domains)**
The scopes for autorisation are described [here](https://github.com/VNG-Realisatie/notificatieservices/blob/main/docs/api-specification/scopes.md).
+ This specification is work in progress. It can be changed completely without notice.
+ 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
- version: 2.0.0-alpha13
-security:
-- JWT-Claims: []
paths:
- /domains:
+ /api/v1/domains:
get:
operationId: domain_list
- description: Returns a list with information about all domains.
+ summary: Returns a list with information about all domains.
parameters:
- name: name
+ required: false
in: query
description: Name of the domain.
- required: false
schema:
type: string
+ tags:
+ - domains
+ security:
+ - JWT-Claims:
+ - domains.read
responses:
'200':
- description: OK
headers:
API-version:
schema:
@@ -46,92 +49,32 @@ paths:
type: array
items:
$ref: '#/components/schemas/Domain'
+ 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:
- - domains
- security:
- - JWT-Claims:
- - domains.read
- post:
- operationId: domain_create
- description: Defines a new domain with its basis properties and filter attributes.
- parameters:
- - name: Content-Type
- in: header
- description: Content type van de verzoekinhoud.
- required: true
- schema:
- type: string
- enum:
- - application/json
- requestBody:
- $ref: '#/components/requestBodies/Domain'
- 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/Domain'
- '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:
- - domains
- security:
- - JWT-Claims:
- - domains.create
- parameters: []
- /domains/{uuid}:
- get:
- operationId: domain_read
- description: Returns information about the specified domain.
- responses:
- '200':
- description: OK
headers:
API-version:
schema:
@@ -141,47 +84,9 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/Domain'
- '401':
- $ref: '#/components/responses/401'
- '403':
- $ref: '#/components/responses/403'
- '404':
- $ref: '#/components/responses/404'
+ $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:
- - domains
- security:
- - JWT-Claims:
- - domains.read
- put:
- operationId: domain_update
- description: Update the specified domain by replacing all properties.
- parameters:
- - name: Content-Type
- in: header
- description: Content type van de verzoekinhoud.
- required: true
- schema:
- type: string
- enum:
- - application/json
- requestBody:
- $ref: '#/components/requestBodies/Domain'
- responses:
- '200':
- description: OK
headers:
API-version:
schema:
@@ -191,49 +96,9 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/Domain'
- '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'
+ $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:
- - domains
- security:
- - JWT-Claims:
- - domains.update
- patch:
- operationId: domain_partial_update
- description: Update the specified domain by replacing the modified properties.
- parameters:
- - name: Content-Type
- in: header
- description: Content type van de verzoekinhoud.
- required: true
- schema:
- type: string
- enum:
- - application/json
- requestBody:
- $ref: '#/components/requestBodies/Domain'
- responses:
- '200':
- description: OK
headers:
API-version:
schema:
@@ -243,102 +108,87 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/Domain'
- '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'
+ $ref: '#/components/schemas/Fout'
+ description: Conflict
'410':
- $ref: '#/components/responses/410'
- '415':
- $ref: '#/components/responses/415'
- '429':
- $ref: '#/components/responses/429'
- '500':
- $ref: '#/components/responses/500'
- tags:
- - domains
- security:
- - JWT-Claims:
- - domains.update
- delete:
- operationId: domain_delete
- description: Delete the specified domain.
- 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'
- '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'
+ 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:
- - domains
- security:
- - JWT-Claims:
- - domains.delete
- parameters:
- - name: uuid
- in: path
- description: UUID of the domain.
- required: true
- schema:
- type: string
- format: uuid
- /events:
+ 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: events_create
- summary: Publish an event.
- description: 'The component will distribute the event to the subscribers when
- the criteria
-
- of a subscription are met.'
+ operationId: domain_create
+ summary: Defines a new domain with its basis properties and filter attributes.
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
+ description: Content type van de verzoekinhoud.
+ required: true
+ tags:
+ - domains
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/Event'
+ $ref: '#/components/schemas/Domain'
required: true
+ security:
+ - JWT-Claims:
+ - domains.create
responses:
- '200':
- description: ''
+ '201':
headers:
+ Location:
+ schema:
+ type: string
+ format: uri
+ description: URL waar de resource leeft.
API-version:
schema:
type: string
@@ -347,20 +197,9 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/Event'
- tags:
- - events
- security:
- - JWT-Claims:
- - events.publish
- parameters: []
- /subscriptions:
- get:
- operationId: subscription_list
- description: Returns a list with information about all subscriptions.
- responses:
- '200':
- description: OK
+ $ref: '#/components/schemas/Domain'
+ description: Created
+ '400':
headers:
API-version:
schema:
@@ -370,93 +209,1447 @@ paths:
content:
application/json:
schema:
- type: array
- items:
- $ref: '#/components/schemas/Subscription'
+ $ref: '#/components/schemas/ValidatieFout'
+ description: Bad request
'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:
- - subscriptions
- security:
- - JWT-Claims:
- - subscriptions.read
- post:
- operationId: subscription_create
- description: Subscribe to receive events.
- parameters:
- - name: Content-Type
- in: header
- description: Content type van de verzoekinhoud.
- required: true
- schema:
- type: string
- enum:
- - application/json
- requestBody:
- $ref: '#/components/requestBodies/Subscription'
- 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: Unauthorized
+ '403':
+ 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/Subscription'
+ $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/domains/{uuid}:
+ get:
+ operationId: domain_retrieve
+ summary: Returns information about the specified domain.
+ parameters:
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the domain.
+ title: uuid
+ required: true
+ tags:
+ - domains
+ security:
+ - JWT-Claims:
+ - domains.read
+ 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/Domain'
+ 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: domain_update
+ parameters:
+ - in: header
+ name: Content-Type
+ schema:
+ type: string
+ enum:
+ - application/json
+ description: Content type van de verzoekinhoud.
+ required: true
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the domain.
+ title: uuid
+ required: true
+ tags:
+ - domains
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Domain'
+ required: true
+ security:
+ - JWT-Claims:
+ - domains.update
+ 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/Domain'
+ 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: domain_partial_update
+ parameters:
+ - in: header
+ name: Content-Type
+ schema:
+ type: string
+ enum:
+ - application/json
+ description: Content type van de verzoekinhoud.
+ required: true
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the domain.
+ title: uuid
+ required: true
+ tags:
+ - domains
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PatchedDomain'
+ security:
+ - JWT-Claims:
+ - domains.update
+ 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/Domain'
+ 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: domain_destroy
+ parameters:
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the domain.
+ title: uuid
+ required: true
+ tags:
+ - domains
+ security:
+ - JWT-Claims:
+ - domains.delete
+ 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/events:
+ post:
+ operationId: events_create
+ parameters:
+ - in: header
+ name: Content-Type
+ schema:
+ type: string
+ enum:
+ - application/json
+ description: Content type van de verzoekinhoud.
+ required: true
+ tags:
+ - events
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Event'
+ required: true
+ security:
+ - JWT-Claims:
+ - events.publish
+ 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/Event'
+ 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/subscriptions:
+ get:
+ operationId: subscription_list
+ summary: Returns a list with information about all subscriptions.
+ tags:
+ - subscriptions
+ security:
+ - JWT-Claims:
+ - subscriptions.read
+ 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/Subscription'
+ 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
+ post:
+ operationId: subscription_create
+ summary: Subscribe to receive events.
+ parameters:
+ - in: header
+ name: Content-Type
+ schema:
+ type: string
+ enum:
+ - application/json
+ description: Content type van de verzoekinhoud.
+ required: true
+ tags:
+ - subscriptions
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Subscription'
+ required: true
+ security:
+ - JWT-Claims:
+ - subscriptions.create
+ 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/Subscription'
+ 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/subscriptions/{uuid}:
+ get:
+ operationId: subscription_retrieve
+ summary: Returns information about the specified subscription.
+ parameters:
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the subscription.
+ title: uuid
+ required: true
+ tags:
+ - subscriptions
+ security:
+ - JWT-Claims:
+ - subscriptions.read
+ 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/Subscription'
+ 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: subscription_update
+ summary: Update the specified subscription by replacing all properties.
+ parameters:
+ - in: header
+ name: Content-Type
+ schema:
+ type: string
+ enum:
+ - application/json
+ description: Content type van de verzoekinhoud.
+ required: true
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the subscription.
+ title: uuid
+ required: true
+ tags:
+ - subscriptions
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Subscription'
+ required: true
+ security:
+ - JWT-Claims:
+ - subscriptions.update
+ 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/Subscription'
+ description: OK
'400':
- $ref: '#/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':
- $ref: '#/components/responses/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':
- $ref: '#/components/responses/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':
- $ref: '#/components/responses/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':
- $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: 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
+ patch:
+ operationId: subscription_partial_update
+ parameters:
+ - in: header
+ name: Content-Type
+ schema:
+ type: string
+ enum:
+ - application/json
+ description: Content type van de verzoekinhoud.
+ required: true
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the subscription.
+ title: uuid
+ required: true
tags:
- subscriptions
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PatchedSubscription'
security:
- JWT-Claims:
- - subscriptions.create
- parameters: []
- /subscriptions/{uuid}:
- get:
- operationId: subscription_read
- description: Returns information about the specified subscription.
+ - subscriptions.update
responses:
'200':
- description: OK
headers:
API-version:
schema:
@@ -467,46 +1660,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Subscription'
- '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:
- - subscriptions
- security:
- - JWT-Claims:
- - subscriptions.read
- put:
- operationId: subscription_update
- description: Update the specified subscription by replacing all properties.
- parameters:
- - name: Content-Type
- in: header
- description: Content type van de verzoekinhoud.
- required: true
- schema:
- type: string
- enum:
- - application/json
- requestBody:
- $ref: '#/components/requestBodies/Subscription'
- responses:
- '200':
description: OK
+ '400':
headers:
API-version:
schema:
@@ -516,49 +1671,9 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/Subscription'
- '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:
- - subscriptions
- security:
- - JWT-Claims:
- - subscriptions.update
- patch:
- operationId: subscription_partial_update
- description: Update the specified subscription by replacing the modified properties.
- parameters:
- - name: Content-Type
- in: header
- description: Content type van de verzoekinhoud.
- required: true
- schema:
- type: string
- enum:
- - application/json
- requestBody:
- $ref: '#/components/requestBodies/Subscription'
- responses:
- '200':
- description: OK
headers:
API-version:
schema:
@@ -568,88 +1683,235 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/Subscription'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
+ $ref: '#/components/schemas/Fout'
+ description: Unauthorized
'403':
- $ref: '#/components/responses/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':
- $ref: '#/components/responses/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':
- $ref: '#/components/responses/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':
- $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: 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: subscription_destroy
+ summary: Delete the specified subscription.
+ parameters:
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ format: uuid
+ description: UUID of the subscription.
+ title: uuid
+ required: true
tags:
- subscriptions
security:
- JWT-Claims:
- - subscriptions.update
- delete:
- operationId: subscription_delete
- description: Delete the specified subscription.
+ - subscriptions.delete
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.'
- '401':
- $ref: '#/components/responses/401'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Fout'
+ description: Unauthorized
'403':
- $ref: '#/components/responses/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':
- $ref: '#/components/responses/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':
- $ref: '#/components/responses/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':
- $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: 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:
- - subscriptions
- security:
- - JWT-Claims:
- - subscriptions.delete
- parameters:
- - name: uuid
- in: path
- description: UUID of the subscription.
- required: true
- schema:
- type: string
- format: uuid
-tags:
-- name: domains
- description: ''
-- name: events
- description: ''
-- name: subscriptions
- description: ''
-servers:
-- url: /api/v1
+ 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:
@@ -657,11 +1919,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:
@@ -669,11 +1931,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:
@@ -681,23 +1943,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:
- 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'
- '406':
- description: Not acceptable
headers:
API-version:
schema:
@@ -705,11 +1955,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'
- '409':
- description: Conflict
+ description: Not found
+ '406':
headers:
API-version:
schema:
@@ -717,11 +1967,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'
- '410':
- description: Gone
+ description: Not acceptable
+ '409':
headers:
API-version:
schema:
@@ -729,11 +1979,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'
- '412':
- description: Precondition failed
+ description: Conflict
+ '410':
headers:
API-version:
schema:
@@ -741,11 +1991,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: Gone
'415':
- description: Unsupported media type
headers:
API-version:
schema:
@@ -753,11 +2003,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:
@@ -765,445 +2015,571 @@ 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:
- Domain:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Domain'
- required: true
- Subscription:
content:
application/json:
schema:
- $ref: '#/components/schemas/Subscription'
- required: true
- securitySchemes:
- JWT-Claims:
- type: http
- scheme: bearer
- bearerFormat: JWT
+ $ref: '#/components/schemas/Fout'
+ description: Internal server error
schemas:
+ AccessTokenTypeEnum:
+ enum:
+ - bearer
+ type: string
+ CredentialTypeEnum:
+ enum:
+ - ACCESSTOKEN
+ type: string
Domain:
- required:
- - name
type: object
properties:
name:
+ type: string
title: Naam
description: Name of the domain.
- type: string
maxLength: 255
- minLength: 1
documentationLink:
+ type: string
+ format: uri
title: Documentatie link
description: Link to human readable information about the domain and its
notifications.
- type: string
- format: uri
maxLength: 200
filterAttributes:
- description: Filter attributes offered by the domain.
type: array
items:
- title: Filter attributes
type: string
maxLength: 255
- minLength: 1
+ description: Filter attributes offered by the domain.
+ title: filter attributes
uuid:
- title: Uuid
- description: UUID of the domain.
type: string
format: uuid
readOnly: true
+ description: UUID of the domain.
+ title: uuid
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
+ title: url
+ description: URL-referentie naar dit object. Dit is de unieke identificatie
+ en locatie van dit object.
minLength: 1
- Fout:
+ maxLength: 1000
required:
- - code
- - title
- - status
- - detail
- - instance
+ - name
+ - url
+ - uuid
+ Event:
type: object
properties:
+ id:
+ type: string
+ description: Identifies the event. Producers MUST ensure that source + id
+ is unique for each distinct event. SHOULD be a UUID.
+ title: id
+ specversion:
+ allOf:
+ - $ref: '#/components/schemas/SpecversionEnum'
+ description: The version of the CloudEvents specification which the event
+ uses. Compliant event producers MUST use a value of 1.0 when referring
+ to this version of the specification.
+ title: specversion
+ source:
+ type: string
+ description: Identifies the context in which an event happened. SHOULD be
+ a URN notation with 'nld' as namespace identifier. SHOULD contain consecutive
+ a unique identifier of the organization that publishes the event followed
+ by the source system that publishes the event. Involved organizations
+ SHOULD agree on how organizations and systems are uniquely identified
+ (e.g. via the use of OIN, KVK-nummer or eIDAS legal identifier for organization
+ identification);.
+ title: source
+ domain:
+ type: string
+ title: domain
+ description: Name of the domain to which the event belongs. Can be seen
+ as the namespace of the event.(This attribute is not listed in the GOV
+ NL profile for CloudEvents).
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
+ description: Beschrijft het type EVENT afkomstig van het specifieke DOMAIN.This
+ attribute contains a value describing the type of event. Type SHOULD start
+ with the domain followed by the name of the event. Events SHOULD be expressed
+ in the past tense. If subtypes are required those SHOULD be expressed
+ using a dot '.' between the super and subtype(s). The type MAY contain
+ version information. Version information SHOULD be appended at the end
+ of the string.
+ title: type
+ time:
type: string
- minLength: 1
- title:
- title: Title
- description: Generieke titel voor het type fout
+ format: date-time
+ nullable: true
+ description: Timestamp of the event. SHOULD be the timestamp the event was
+ registered in the source system and NOT the time the event occurred in
+ reality. The exact meaning of time MUST be clearly documented.
+ title: time
+ subscription:
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
+ format: uuid
+ nullable: true
+ description: Usually empty. Only used in situations where notificationservices
+ are chained. For example notificationservice2 (ns2) is subscribed to notifcationservice1
+ (ns1). When ns1 sends an event to ns2 this attribute SHOULD contain the
+ subscription id of the subscription that ns1 has on ns2 (that was resposible
+ for receiving the event). Note this attribute is overwritten when the
+ event is passed through to a client. It will be set to the value of the
+ subscription id of the subscription of the client.
+ title: subscription
+ subscriberReference:
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.
+ nullable: true
+ description: Usually empty. Only used in situations where notificationservices
+ are chained. For example notificationservice2 (ns2) is subscribed to notifcationservice1
+ (ns1). When ns1 sends an event to ns2 this attribute COULD contain the
+ subscriberReference the was specified when ns2 subscribed to ns1. Note
+ this attribute is overwritten when the event is passed through to a client.
+ It will be set to the value of the subscriberReference of the subscription
+ of the client (when specified by the client).
+ title: subscriberReference
+ maxLength: 255
+ datacontenttype:
type: string
- minLength: 1
- FieldValidationError:
+ nullable: true
+ description: Content type of data value. In this version of the API the
+ value MUST be 'application/json'. In future versions of the API other
+ values such as described in RFC 2046 MAY be used.
+ title: datacontenttype
+ dataschema:
+ type: string
+ format: uri
+ nullable: true
+ description: Identifies the schema that data adheres to.
+ title: dataschema
+ sequence:
+ type: string
+ nullable: true
+ description: Value expressing the relative order of the event. This enables
+ interpretation of data supercedence.
+ title: sequence
+ sequencetype:
+ nullable: true
+ description: Specifies the semantics of the sequence attribute. (Currently
+ limited to the value INTEGER).
+ title: sequencetype
+ oneOf:
+ - $ref: '#/components/schemas/SequencetypeEnum'
+ - $ref: '#/components/schemas/NullEnum'
+ subject:
+ type: string
+ nullable: true
+ description: Included to be compatible with CloudEvents specification. The
+ GOV NL profile states 'Decision on whether or not to use the attribute
+ and/or the exact interpretation is postponed. To be determined partly
+ on the basis of future agreements about subscription and filtering.'
+ title: subject
+ data:
+ type: object
+ additionalProperties: {}
+ nullable: true
+ title: data
+ dataBase64:
+ type: string
+ nullable: true
+ description: The presence of the data_base64 member clearly indicates that
+ the value is a Base64 encoded binary data, which the serializer MUST decode
+ into a binary runtime data type.
+ title: dataBase64
+ dataref:
+ type: string
+ nullable: true
+ description: A reference to a location where the event payload is stored.
+ If both the data attribute and the dataref attribute are specified their
+ contents MUST be identical.
+ title: dataref
required:
- - name
- - code
- - reason
+ - domain
+ - id
+ - source
+ - specversion
+ - type
+ FieldValidationError:
type: object
+ description: Formaat van validatiefouten.
properties:
name:
- title: Name
- description: Naam van het veld met ongeldige gegevens
type: string
- minLength: 1
+ description: Naam van het veld met ongeldige gegevens
+ title: name
code:
- title: Code
- description: Systeemcode die het type fout aangeeft
type: string
- minLength: 1
+ description: Systeemcode die het type fout aangeeft
+ title: code
reason:
- title: Reason
- description: Uitleg wat er precies fout is met de gegevens
type: string
- minLength: 1
- ValidatieFout:
+ description: Uitleg wat er precies fout is met de gegevens
+ title: reason
required:
- code
- - title
- - status
- - detail
- - instance
- - invalidParams
+ - name
+ - reason
+ Fout:
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
- 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
- invalidParams:
- type: array
- items:
- $ref: '#/components/schemas/FieldValidationError'
- Event:
- required:
- - id
- - specversion
- - source
- - domain
- - type
- type: object
- properties:
- id:
- title: Id
- description: Identifies the event. Producers MUST ensure that source + id
- is unique for each distinct event. SHOULD be a UUID.
- type: string
- minLength: 1
- specversion:
- title: Specversion
- description: The version of the CloudEvents specification which the event
- uses. Compliant event producers MUST use a value of 1.0 when referring
- to this version of the specification.
type: string
- enum:
- - '1.0'
- source:
- title: Source
- description: Identifies the context in which an event happened. SHOULD be
- a URN notation with 'nld' as namespace identifier. SHOULD contain consecutive
- a unique identifier of the organization that publishes the event followed
- by the source system that publishes the event. Involved organizations
- SHOULD agree on how organizations and systems are uniquely identified
- (e.g. via the use of OIN, KVK-nummer or eIDAS legal identifier for organization
- identification);.
- type: string
- minLength: 1
- domain:
- title: Domain
- description: Name of the domain to which the event belongs. Can be seen
- as the namespace of the event.(This attribute is not listed in the GOV
- NL profile for CloudEvents).
+ description: Extra informatie bij de fout, indien beschikbaar
+ title: detail
+ instance:
type: string
- type:
- title: Type
- description: Beschrijft het type EVENT afkomstig van het specifieke DOMAIN.This
- attribute contains a value describing the type of event. Type SHOULD start
- with the domain followed by the name of the event. Events SHOULD be expressed
- in the past tense. If subtypes are required those SHOULD be expressed
- using a dot '.' between the super and subtype(s). The type MAY contain
- version information. Version information SHOULD be appended at the end
- of the 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
+ MethodEnum:
+ enum:
+ - POST
+ type: string
+ NullEnum:
+ enum:
+ - null
+ PatchedDomain:
+ type: object
+ properties:
+ name:
type: string
- minLength: 1
- time:
- title: Time
- description: Timestamp of the event. SHOULD be the timestamp the event was
- registered in the source system and NOT the time the event occurred in
- reality. The exact meaning of time MUST be clearly documented.
+ title: Naam
+ description: Name of the domain.
+ maxLength: 255
+ documentationLink:
type: string
- format: date-time
- nullable: true
- subscription:
- title: Subscription
- description: Usually empty. Only used in situations where notificationservices
- are chained. For example notificationservice2 (ns2) is subscribed to notifcationservice1
- (ns1). When ns1 sends an event to ns2 this attribute SHOULD contain the
- subscription id of the subscription that ns1 has on ns2 (that was resposible
- for receiving the event). Note this attribute is overwritten when the
- event is passed through to a client. It will be set to the value of the
- subscription id of the subscription of the client.
+ format: uri
+ title: Documentatie link
+ description: Link to human readable information about the domain and its
+ notifications.
+ maxLength: 200
+ filterAttributes:
+ type: array
+ items:
+ type: string
+ maxLength: 255
+ description: Filter attributes offered by the domain.
+ title: filter attributes
+ uuid:
type: string
format: uuid
- nullable: true
- subscriberReference:
- title: Subscriberreference
- description: Usually empty. Only used in situations where notificationservices
- are chained. For example notificationservice2 (ns2) is subscribed to notifcationservice1
- (ns1). When ns1 sends an event to ns2 this attribute COULD contain the
- subscriberReference the was specified when ns2 subscribed to ns1. Note
- this attribute is overwritten when the event is passed through to a client.
- It will be set to the value of the subscriberReference of the subscription
- of the client (when specified by the client).
+ readOnly: true
+ description: UUID of the domain.
+ title: uuid
+ url:
type: string
- maxLength: 255
+ format: uri
+ readOnly: true
+ title: url
+ description: URL-referentie naar dit object. Dit is de unieke identificatie
+ en locatie van dit object.
minLength: 1
- nullable: true
- datacontenttype:
- title: Datacontenttype
- description: Content type of data value. In this version of the API the
- value MUST be 'application/json'. In future versions of the API other
- values such as described in RFC 2046 MAY be used.
+ maxLength: 1000
+ PatchedSubscription:
+ type: object
+ properties:
+ id:
type: string
- minLength: 1
+ format: uuid
+ readOnly: true
+ description: UUID of the subscription.
+ title: uuid
+ protocol:
+ allOf:
+ - $ref: '#/components/schemas/ProtocolEnum'
+ description: Identifier of a delivery protocol.
+ title: protocol
+ protocolSettings:
+ allOf:
+ - $ref: '#/components/schemas/ProtocolSettings'
nullable: true
- dataschema:
- title: Dataschema
- description: Identifies the schema that data adheres to.
+ title: protocol settings
+ sink:
type: string
format: uri
- minLength: 1
+ description: The address to which events shall be delivered using the selected
+ protocol.
+ title: sink
+ maxLength: 200
+ sinkCredential:
+ allOf:
+ - $ref: '#/components/schemas/SinkCredential'
nullable: true
- sequence:
- title: Sequence
- description: Value expressing the relative order of the event. This enables
- interpretation of data supercedence.
- type: string
- minLength: 1
+ title: sink credential
+ config:
+ type: object
+ additionalProperties: {}
nullable: true
- sequencetype:
- title: Sequencetype
- description: Specifies the semantics of the sequence attribute. (Currently
- limited to the value INTEGER).
+ description: Implementation-specific configuration parameters needed by
+ the subscription manager for acquiring events.
+ title: config
+ source:
type: string
- enum:
- - Integer
nullable: true
- subject:
- title: Subject
- description: Included to be compatible with CloudEvents specification. The
- GOV NL profile states 'Decision on whether or not to use the attribute
- and/or the exact interpretation is postponed. To be determined partly
- on the basis of future agreements about subscription and filtering.'
+ description: Source to which the subscription applies. May be implied by
+ the request address.
+ title: source
+ maxLength: 255
+ domain:
type: string
- minLength: 1
nullable: true
- data:
- title: Data
- type: object
+ description: Domain to which the subscription applies.
+ title: Domain
+ types:
+ type: array
+ items:
+ type: string
+ maxLength: 255
nullable: true
- data_base64:
- title: Data base64
- description: The presence of the data_base64 member clearly indicates that
- the value is a Base64 encoded binary data, which the serializer MUST decode
- into a binary runtime data type.
+ description: CloudEvent types eligible to be delivered by this subscription.
+ title: types
+ subscriberReference:
type: string
- minLength: 1
nullable: true
- dataref:
- title: Dataref
- description: A reference to a location where the event payload is stored.
- If both the data attribute and the dataref attribute are specified their
- contents MUST be identical.
+ description: Events that are send to the subscriber will contain this reference.
+ The subscriber can use the reference for internal routing of the event.
+ title: subscriber reference
+ maxLength: 255
+ filters:
+ type: object
+ additionalProperties: {}
+ description: This filter evaluates to 'true' if all contained filters are
+ 'true'.
+ title: filters
+ 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
- nullable: true
+ maxLength: 1000
+ ProtocolEnum:
+ enum:
+ - HTTP
+ type: string
ProtocolSettings:
type: object
properties:
headers:
- title: Headers
type: object
additionalProperties:
type: string
+ title: ''
maxLength: 255
- minLength: 1
+ title: headers
method:
- title: Method
- type: string
- enum:
- - POST
- nullable: true
+ allOf:
+ - $ref: '#/components/schemas/MethodEnum'
+ title: method
+ SequencetypeEnum:
+ enum:
+ - Integer
+ type: string
SinkCredential:
- required:
- - credentialType
- - accessToken
- - accessTokenExpiresUtc
- - accessTokenType
type: object
properties:
credentialType:
- title: Credential type
- type: string
- enum:
- - ACCESSTOKEN
+ allOf:
+ - $ref: '#/components/schemas/CredentialTypeEnum'
+ title: credentialType
accessToken:
- title: Access token
type: string
- minLength: 1
+ title: accessToken
accessTokenExpiresUtc:
- title: Access token expires utc
type: string
format: date-time
+ title: accessTokenExpiresUtc
accessTokenType:
- title: Access token type
- type: string
- enum:
- - bearer
- nullable: true
- Subscription:
+ allOf:
+ - $ref: '#/components/schemas/AccessTokenTypeEnum'
+ title: accessTokenType
required:
- - protocol
- - sink
+ - accessToken
+ - accessTokenExpiresUtc
+ - accessTokenType
+ - credentialType
+ SpecversionEnum:
+ enum:
+ - '1.0'
+ type: string
+ Subscription:
type: object
properties:
id:
- title: Id
- description: UUID of the subscription.
type: string
format: uuid
readOnly: true
+ description: UUID of the subscription.
+ title: uuid
protocol:
- title: Protocol
+ allOf:
+ - $ref: '#/components/schemas/ProtocolEnum'
description: Identifier of a delivery protocol.
- type: string
- enum:
- - HTTP
+ title: protocol
protocolSettings:
- $ref: '#/components/schemas/ProtocolSettings'
+ allOf:
+ - $ref: '#/components/schemas/ProtocolSettings'
+ nullable: true
+ title: protocol settings
sink:
- title: Sink
- description: The address to which events shall be delivered using the selected
- protocol.
type: string
format: uri
+ description: The address to which events shall be delivered using the selected
+ protocol.
+ title: sink
maxLength: 200
- minLength: 1
sinkCredential:
- $ref: '#/components/schemas/SinkCredential'
+ allOf:
+ - $ref: '#/components/schemas/SinkCredential'
+ nullable: true
+ title: sink credential
config:
- title: Config
- description: Implementation-specific configuration parameters needed by
- the subscription manager for acquiring events.
type: object
+ additionalProperties: {}
nullable: true
+ description: Implementation-specific configuration parameters needed by
+ the subscription manager for acquiring events.
+ title: config
source:
- title: Source
+ type: string
+ nullable: true
description: Source to which the subscription applies. May be implied by
the request address.
- type: string
+ title: source
maxLength: 255
- nullable: true
domain:
- title: Domain
- description: Domain to which the subscription applies.
type: string
nullable: true
+ description: Domain to which the subscription applies.
+ title: Domain
types:
- description: CloudEvent types eligible to be delivered by this subscription.
type: array
items:
- title: Types
type: string
maxLength: 255
- minLength: 1
nullable: true
+ description: CloudEvent types eligible to be delivered by this subscription.
+ title: types
subscriberReference:
- title: Subscriber reference
+ type: string
+ nullable: true
description: Events that are send to the subscriber will contain this reference.
The subscriber can use the reference for internal routing of the event.
- type: string
+ title: subscriber reference
maxLength: 255
- nullable: true
filters:
- title: Filters
+ type: object
+ additionalProperties: {}
description: This filter evaluates to 'true' if all contained filters are
'true'.
- type: object
+ title: filters
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
+ title: url
+ description: URL-referentie naar dit object. Dit is de unieke identificatie
+ en locatie van dit object.
minLength: 1
+ maxLength: 1000
+ required:
+ - id
+ - protocol
+ - sink
+ - url
+ 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
+ securitySchemes:
+ JWT-Claims:
+ type: http
+ bearerFormat: JWT
+ scheme: bearer
+servers:
+- url: https://notificaties-api.test.vng.cloud/api/v1
+tags:
+- name: domains
+ description: ''
+- name: events
+ description: Publish an event The component will distribute the event to the subscribers
+ when the criteriaof a subscription are met.
+- name: subscriptions
+ description: ''
diff --git a/src/swagger2.0.json b/src/swagger2.0.json
deleted file mode 100644
index f41cc0c4..00000000
--- a/src/swagger2.0.json
+++ /dev/null
@@ -1,1574 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "title": "Notification API",
- "description": "\nThe API consists of three parts:\n 1. **Publishing events (resource Events)**
The events resource is based on the [GOV NL profile for CloudEvents](https://vng-realisatie.github.io/NL-GOV-profile-for-CloudEvents).\n This specification only contains brief descriptions of the attributes of the event. Please refer to the GOV NL profile for additional information.\n 2. **Subscribing to receive events (resource Subscriptions)**
\n The subscription resource was derived from the [CloudEvents Subscription v1.0.0-wip](https://github.com/cloudevents/spec/tree/main/subscriptions).\n This specification only contains brief descriptions of the attributes of the subscription. Please refer to the draft CE Subscription Specification for additional information.\n 3. **Basic information about domains (resource Domains)**
The scopes for autorisation are described [here](https://github.com/VNG-Realisatie/notificatieservices/blob/main/docs/api-specification/scopes.md).\n This specification is work in progress. It can be changed completely without notice.\n",
- "license": {
- "name": "EUPL 1.2",
- "url": "https://opensource.org/licenses/EUPL-1.2"
- },
- "version": "2.0.0-alpha13"
- },
- "basePath": "/api/v1",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
- "securityDefinitions": {
- "JWT-Claims": {
- "type": "http",
- "scheme": "bearer",
- "bearerFormat": "JWT"
- }
- },
- "security": [
- {
- "JWT-Claims": []
- }
- ],
- "paths": {
- "/domains": {
- "get": {
- "operationId": "domain_list",
- "description": "Returns a list with information about all domains.",
- "parameters": [
- {
- "name": "name",
- "in": "query",
- "description": "Name of the domain.",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Domain"
- }
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "domains"
- ],
- "security": [
- {
- "JWT-Claims": [
- "domains.read"
- ]
- }
- ]
- },
- "post": {
- "operationId": "domain_create",
- "description": "Defines a new domain with its basis properties and filter attributes.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Domain"
- }
- }
- ],
- "responses": {
- "201": {
- "description": "Created",
- "schema": {
- "$ref": "#/definitions/Domain"
- },
- "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": {
- "schema": {
- "type": "string",
- "format": "uri"
- },
- "description": "URL waar de resource leeft."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "domains"
- ],
- "security": [
- {
- "JWT-Claims": [
- "domains.create"
- ]
- }
- ]
- },
- "parameters": []
- },
- "/domains/{uuid}": {
- "get": {
- "operationId": "domain_read",
- "description": "Returns information about the specified domain.",
- "parameters": [],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/Domain"
- },
- "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": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "domains"
- ],
- "security": [
- {
- "JWT-Claims": [
- "domains.read"
- ]
- }
- ]
- },
- "put": {
- "operationId": "domain_update",
- "description": "Update the specified domain by replacing all properties.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Domain"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/Domain"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "domains"
- ],
- "security": [
- {
- "JWT-Claims": [
- "domains.update"
- ]
- }
- ]
- },
- "patch": {
- "operationId": "domain_partial_update",
- "description": "Update the specified domain by replacing the modified properties.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Domain"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/Domain"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "domains"
- ],
- "security": [
- {
- "JWT-Claims": [
- "domains.update"
- ]
- }
- ]
- },
- "delete": {
- "operationId": "domain_delete",
- "description": "Delete the specified domain.",
- "parameters": [],
- "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": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "domains"
- ],
- "security": [
- {
- "JWT-Claims": [
- "domains.delete"
- ]
- }
- ]
- },
- "parameters": [
- {
- "name": "uuid",
- "in": "path",
- "description": "UUID of the domain.",
- "required": true,
- "type": "string",
- "format": "uuid"
- }
- ]
- },
- "/events": {
- "post": {
- "operationId": "events_create",
- "summary": "Publish an event.",
- "description": "The component will distribute the event to the subscribers when the criteria\nof a subscription are met.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Event"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/Event"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- }
- },
- "tags": [
- "events"
- ],
- "security": [
- {
- "JWT-Claims": [
- "events.publish"
- ]
- }
- ]
- },
- "parameters": []
- },
- "/subscriptions": {
- "get": {
- "operationId": "subscription_list",
- "description": "Returns a list with information about all subscriptions.",
- "parameters": [],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Subscription"
- }
- },
- "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": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "subscriptions"
- ],
- "security": [
- {
- "JWT-Claims": [
- "subscriptions.read"
- ]
- }
- ]
- },
- "post": {
- "operationId": "subscription_create",
- "description": "Subscribe to receive events.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Subscription"
- }
- }
- ],
- "responses": {
- "201": {
- "description": "Created",
- "schema": {
- "$ref": "#/definitions/Subscription"
- },
- "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": {
- "schema": {
- "type": "string",
- "format": "uri"
- },
- "description": "URL waar de resource leeft."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "subscriptions"
- ],
- "security": [
- {
- "JWT-Claims": [
- "subscriptions.create"
- ]
- }
- ]
- },
- "parameters": []
- },
- "/subscriptions/{uuid}": {
- "get": {
- "operationId": "subscription_read",
- "description": "Returns information about the specified subscription.",
- "parameters": [],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/Subscription"
- },
- "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": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "subscriptions"
- ],
- "security": [
- {
- "JWT-Claims": [
- "subscriptions.read"
- ]
- }
- ]
- },
- "put": {
- "operationId": "subscription_update",
- "description": "Update the specified subscription by replacing all properties.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Subscription"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/Subscription"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "subscriptions"
- ],
- "security": [
- {
- "JWT-Claims": [
- "subscriptions.update"
- ]
- }
- ]
- },
- "patch": {
- "operationId": "subscription_partial_update",
- "description": "Update the specified subscription by replacing the modified properties.",
- "parameters": [
- {
- "name": "Content-Type",
- "in": "header",
- "description": "Content type van de verzoekinhoud.",
- "required": true,
- "type": "string",
- "enum": [
- "application/json"
- ]
- },
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Subscription"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/Subscription"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "400": {
- "$ref": "#/responses/400"
- },
- "401": {
- "$ref": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "subscriptions"
- ],
- "security": [
- {
- "JWT-Claims": [
- "subscriptions.update"
- ]
- }
- ]
- },
- "delete": {
- "operationId": "subscription_delete",
- "description": "Delete the specified subscription.",
- "parameters": [],
- "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": "#/responses/401"
- },
- "403": {
- "$ref": "#/responses/403"
- },
- "404": {
- "$ref": "#/responses/404"
- },
- "406": {
- "$ref": "#/responses/406"
- },
- "409": {
- "$ref": "#/responses/409"
- },
- "410": {
- "$ref": "#/responses/410"
- },
- "415": {
- "$ref": "#/responses/415"
- },
- "429": {
- "$ref": "#/responses/429"
- },
- "500": {
- "$ref": "#/responses/500"
- }
- },
- "tags": [
- "subscriptions"
- ],
- "security": [
- {
- "JWT-Claims": [
- "subscriptions.delete"
- ]
- }
- ]
- },
- "parameters": [
- {
- "name": "uuid",
- "in": "path",
- "description": "UUID of the subscription.",
- "required": true,
- "type": "string",
- "format": "uuid"
- }
- ]
- }
- },
- "definitions": {
- "Domain": {
- "required": [
- "name"
- ],
- "type": "object",
- "properties": {
- "name": {
- "title": "Naam",
- "description": "Name of the domain.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "documentationLink": {
- "title": "Documentatie link",
- "description": "Link to human readable information about the domain and its notifications.",
- "type": "string",
- "format": "uri",
- "maxLength": 200
- },
- "filterAttributes": {
- "description": "Filter attributes offered by the domain.",
- "type": "array",
- "items": {
- "title": "Filter attributes",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "uuid": {
- "title": "Uuid",
- "description": "UUID of the domain.",
- "type": "string",
- "format": "uuid",
- "readOnly": true
- },
- "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
- }
- }
- },
- "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
- }
- }
- },
- "ValidatieFout": {
- "required": [
- "code",
- "title",
- "status",
- "detail",
- "instance",
- "invalidParams"
- ],
- "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
- },
- "invalidParams": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/FieldValidationError"
- }
- }
- }
- },
- "Event": {
- "required": [
- "id",
- "specversion",
- "source",
- "domain",
- "type"
- ],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifies the event. Producers MUST ensure that source + id is unique for each distinct event. SHOULD be a UUID.",
- "type": "string",
- "minLength": 1
- },
- "specversion": {
- "title": "Specversion",
- "description": "The version of the CloudEvents specification which the event uses. Compliant event producers MUST use a value of 1.0 when referring to this version of the specification.",
- "type": "string",
- "enum": [
- "1.0"
- ]
- },
- "source": {
- "title": "Source",
- "description": "Identifies the context in which an event happened. SHOULD be a URN notation with 'nld' as namespace identifier. SHOULD contain consecutive a unique identifier of the organization that publishes the event followed by the source system that publishes the event. Involved organizations SHOULD agree on how organizations and systems are uniquely identified (e.g. via the use of OIN, KVK-nummer or eIDAS legal identifier for organization identification);.",
- "type": "string",
- "minLength": 1
- },
- "domain": {
- "title": "Domain",
- "description": "Name of the domain to which the event belongs. Can be seen as the namespace of the event.(This attribute is not listed in the GOV NL profile for CloudEvents).",
- "type": "string"
- },
- "type": {
- "title": "Type",
- "description": "Beschrijft het type EVENT afkomstig van het specifieke DOMAIN.This attribute contains a value describing the type of event. Type SHOULD start with the domain followed by the name of the event. Events SHOULD be expressed in the past tense. If subtypes are required those SHOULD be expressed using a dot '.' between the super and subtype(s). The type MAY contain version information. Version information SHOULD be appended at the end of the string.",
- "type": "string",
- "minLength": 1
- },
- "time": {
- "title": "Time",
- "description": "Timestamp of the event. SHOULD be the timestamp the event was registered in the source system and NOT the time the event occurred in reality. The exact meaning of time MUST be clearly documented.",
- "type": "string",
- "format": "date-time",
- "x-nullable": true
- },
- "subscription": {
- "title": "Subscription",
- "description": "Usually empty. Only used in situations where notificationservices are chained. For example notificationservice2 (ns2) is subscribed to notifcationservice1 (ns1). When ns1 sends an event to ns2 this attribute SHOULD contain the subscription id of the subscription that ns1 has on ns2 (that was resposible for receiving the event). Note this attribute is overwritten when the event is passed through to a client. It will be set to the value of the subscription id of the subscription of the client.",
- "type": "string",
- "format": "uuid",
- "x-nullable": true
- },
- "subscriberReference": {
- "title": "Subscriberreference",
- "description": "Usually empty. Only used in situations where notificationservices are chained. For example notificationservice2 (ns2) is subscribed to notifcationservice1 (ns1). When ns1 sends an event to ns2 this attribute COULD contain the subscriberReference the was specified when ns2 subscribed to ns1. Note this attribute is overwritten when the event is passed through to a client. It will be set to the value of the subscriberReference of the subscription of the client (when specified by the client).",
- "type": "string",
- "maxLength": 255,
- "minLength": 1,
- "x-nullable": true
- },
- "datacontenttype": {
- "title": "Datacontenttype",
- "description": "Content type of data value. In this version of the API the value MUST be 'application/json'. In future versions of the API other values such as described in RFC 2046 MAY be used.",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "dataschema": {
- "title": "Dataschema",
- "description": "Identifies the schema that data adheres to.",
- "type": "string",
- "format": "uri",
- "minLength": 1,
- "x-nullable": true
- },
- "sequence": {
- "title": "Sequence",
- "description": "Value expressing the relative order of the event. This enables interpretation of data supercedence.",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "sequencetype": {
- "title": "Sequencetype",
- "description": "Specifies the semantics of the sequence attribute. (Currently limited to the value INTEGER).",
- "type": "string",
- "enum": [
- "Integer"
- ],
- "x-nullable": true
- },
- "subject": {
- "title": "Subject",
- "description": "Included to be compatible with CloudEvents specification. The GOV NL profile states 'Decision on whether or not to use the attribute and/or the exact interpretation is postponed. To be determined partly on the basis of future agreements about subscription and filtering.'",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "data": {
- "title": "Data",
- "type": "object",
- "x-nullable": true
- },
- "data_base64": {
- "title": "Data base64",
- "description": "The presence of the data_base64 member clearly indicates that the value is a Base64 encoded binary data, which the serializer MUST decode into a binary runtime data type.",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "dataref": {
- "title": "Dataref",
- "description": "A reference to a location where the event payload is stored. If both the data attribute and the dataref attribute are specified their contents MUST be identical.",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- }
- }
- },
- "ProtocolSettings": {
- "type": "object",
- "properties": {
- "headers": {
- "title": "Headers",
- "type": "object",
- "additionalProperties": {
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "method": {
- "title": "Method",
- "type": "string",
- "enum": [
- "POST"
- ]
- }
- },
- "x-nullable": true
- },
- "SinkCredential": {
- "required": [
- "credentialType",
- "accessToken",
- "accessTokenExpiresUtc",
- "accessTokenType"
- ],
- "type": "object",
- "properties": {
- "credentialType": {
- "title": "Credential type",
- "type": "string",
- "enum": [
- "ACCESSTOKEN"
- ]
- },
- "accessToken": {
- "title": "Access token",
- "type": "string",
- "minLength": 1
- },
- "accessTokenExpiresUtc": {
- "title": "Access token expires utc",
- "type": "string",
- "format": "date-time"
- },
- "accessTokenType": {
- "title": "Access token type",
- "type": "string",
- "enum": [
- "bearer"
- ]
- }
- },
- "x-nullable": true
- },
- "Subscription": {
- "required": [
- "protocol",
- "sink"
- ],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "UUID of the subscription.",
- "type": "string",
- "format": "uuid",
- "readOnly": true
- },
- "protocol": {
- "title": "Protocol",
- "description": "Identifier of a delivery protocol.",
- "type": "string",
- "enum": [
- "HTTP"
- ]
- },
- "protocolSettings": {
- "$ref": "#/definitions/ProtocolSettings"
- },
- "sink": {
- "title": "Sink",
- "description": "The address to which events shall be delivered using the selected protocol.",
- "type": "string",
- "format": "uri",
- "maxLength": 200,
- "minLength": 1
- },
- "sinkCredential": {
- "$ref": "#/definitions/SinkCredential"
- },
- "config": {
- "title": "Config",
- "description": "Implementation-specific configuration parameters needed by the subscription manager for acquiring events.",
- "type": "object",
- "x-nullable": true
- },
- "source": {
- "title": "Source",
- "description": "Source to which the subscription applies. May be implied by the request address.",
- "type": "string",
- "maxLength": 255,
- "x-nullable": true
- },
- "domain": {
- "title": "Domain",
- "description": "Domain to which the subscription applies.",
- "type": "string",
- "x-nullable": true
- },
- "types": {
- "description": "CloudEvent types eligible to be delivered by this subscription.",
- "type": "array",
- "items": {
- "title": "Types",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "x-nullable": true
- },
- "subscriberReference": {
- "title": "Subscriber reference",
- "description": "Events that are send to the subscriber will contain this reference. The subscriber can use the reference for internal routing of the event.",
- "type": "string",
- "maxLength": 255,
- "x-nullable": true
- },
- "filters": {
- "title": "Filters",
- "description": "This filter evaluates to 'true' if all contained filters are 'true'.",
- "type": "object"
- },
- "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
- }
- }
- }
- },
- "responses": {
- "400": {
- "description": "Bad request",
- "schema": {
- "$ref": "#/definitions/ValidatieFout"
- },
- "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": {
- "description": "Unauthorized",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "404": {
- "description": "Not found",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "406": {
- "description": "Not acceptable",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "409": {
- "description": "Conflict",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "410": {
- "description": "Gone",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "412": {
- "description": "Precondition failed",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "415": {
- "description": "Unsupported media type",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "429": {
- "description": "Too many requests",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- },
- "500": {
- "description": "Internal server error",
- "schema": {
- "$ref": "#/definitions/Fout"
- },
- "headers": {
- "API-version": {
- "schema": {
- "type": "string"
- },
- "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
- }
- }
- }
- },
- "tags": [
- {
- "name": "domains",
- "description": ""
- },
- {
- "name": "events",
- "description": ""
- },
- {
- "name": "subscriptions",
- "description": ""
- }
- ]
-}