diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1b6909c..800ee022 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: strategy: matrix: - postgres: ['10', '11', '12'] + postgres: ['11', '12', '13'] name: Tests (PG ${{ matrix.postgres }}) @@ -79,7 +79,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: - python-version: '3.11' + python-version: '3.10' - uses: actions/setup-node@v2-beta with: node-version: '17' @@ -87,9 +87,7 @@ jobs: - name: Install system packages run: | sudo apt-get update \ - && sudo apt-get install -y --no-install-recommends \ - libgdal-dev \ - gdal-bin + && sudo apt-get install -y --no-install-recommends - name: Install dependencies run: pip install -r requirements/dev.txt codecov - name: Build frontend diff --git a/Dockerfile b/Dockerfile index bbb2c41f..3aeedc56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,21 @@ -# This is a multi-stage build file, which means a stage is used to build -# the backend (dependencies), the frontend stack and a final production -# stage re-using assets from the build stages. This keeps the final production -# image minimal in size. +# Stage 1 - Compile needed python dependencies +FROM python:3.10-slim-bookworm AS build -# Stage 1 - Backend build environment -# includes compilers and build tooling to create the environment -FROM python:3.11-buster AS backend-build - -RUN apt-get update && apt-get install -y --no-install-recommends \ +RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \ + pkg-config \ + build-essential \ libpq-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /app -RUN mkdir /app/src -# Ensure we use the latest version of pip -RUN pip install pip setuptools -U COPY ./requirements /app/requirements +RUN pip install pip -U RUN pip install -r requirements/production.txt -# Stage 2 - Install frontend deps and build assets -FROM node:17-buster AS frontend-build - -RUN apt-get update && apt-get install -y --no-install-recommends \ - git \ - && rm -rf /var/lib/apt/lists/* +# Stage 2 - build frontend +FROM node:16-bookworm-slim AS frontend-build WORKDIR /app @@ -43,54 +33,76 @@ COPY ./src /app/src RUN npm run build -# Stage 3 - Build docker image suitable for production -FROM python:3.11-buster +# Stage 3 - Build docker image suitable for execution and deployment +FROM python:3.10-slim-bookworm AS production # Stage 3.1 - Set up the needed production dependencies # install all the dependencies for GeoDjango -RUN apt-get update && apt-get install -y --no-install-recommends \ +RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \ + # bare minimum to debug live containers procps \ - vim \ + nano \ + # serve correct Content-Type headers + mime-support \ + # (geo) django dependencies postgresql-client \ - # lxml deps - # libxslt \ + gettext \ + binutils \ && rm -rf /var/lib/apt/lists/* +RUN pip install pip -U + WORKDIR /app +# COPY ./cache /app/cache COPY ./bin/docker_start.sh /start.sh +COPY ./bin/wait_for_db.sh /wait_for_db.sh COPY ./bin/celery_worker.sh /celery_worker.sh -COPY ./bin/celery_beat.sh /celery_beat.sh COPY ./bin/celery_flower.sh /celery_flower.sh -RUN mkdir /app/log -RUN mkdir /app/media -# copy backend build deps -COPY --from=backend-build /usr/local/lib/python3.11 /usr/local/lib/python3.11 -COPY --from=backend-build /usr/local/bin/uwsgi /usr/local/bin/uwsgi -COPY --from=backend-build /app/src/ /app/src/ -COPY --from=backend-build /usr/local/bin/celery /usr/local/bin/celery +RUN mkdir /app/log /app/config /app/media /app/private-media +# prevent writing to the container layer, which would degrade performance. +# This also serves as a hint for the intended volumes. +VOLUME ["/app/log", "/app/media", "/app/private-media"] +# copy backend build deps +COPY --from=build /usr/local/lib/python3.10 /usr/local/lib/python3.10 +COPY --from=build /usr/local/bin/uwsgi /usr/local/bin/uwsgi +COPY --from=build /usr/local/bin/celery /usr/local/bin/celery -# copy frontend build statics COPY --from=frontend-build /app/src/openklant/static /app/src/openklant/static -# copy source code +# Stage 3.2 - Copy source code COPY ./src /app/src -RUN useradd -M -u 1000 maykin -RUN chown -R maykin /app +RUN groupadd -g 1000 openklant \ + && useradd -M -u 1000 -g 1000 openklant \ + && chown -R openklant:openklant /app # drop privileges -USER maykin +USER openklant ARG COMMIT_HASH +ARG RELEASE ENV GIT_SHA=${COMMIT_HASH} +ENV RELEASE=${RELEASE} + ENV DJANGO_SETTINGS_MODULE=openklant.conf.docker ARG SECRET_KEY=dummy -# Run collectstatic, so the result is already included in the image -RUN python src/manage.py collectstatic --noinput +LABEL org.label-schema.vcs-ref=$COMMIT_HASH \ + org.label-schema.vcs-url="https://github.com/maykinmedia/open-klant" \ + org.label-schema.version=$RELEASE \ + org.label-schema.name="Open Klant" + +# Run management commands: +# * collectstatic -> bake the static assets into the image +# * compilemessages -> ensure the translation catalog binaries are present +# * warm_cache -> writes to the filesystem cache so that orgs don't need to open the +# firewall to github +RUN python src/manage.py collectstatic --noinput \ + && python src/manage.py compilemessages + # && python src/manage.py warm_cache EXPOSE 8000 -CMD ["/start.sh"] +CMD ["/start.sh"] \ No newline at end of file diff --git a/INSTALL.rst b/INSTALL.rst index 4265a7f8..de9498d8 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -18,7 +18,7 @@ Prerequisites You need the following libraries and/or programs: -* `Python`_ 3.11 or above +* `Python`_ 3.10 * Python `Virtualenv`_ and `Pip`_ * `PostgreSQL`_ 11 or above * `Node.js`_ diff --git a/bin/celery_beat.sh b/bin/celery_beat.sh deleted file mode 100755 index a93a266b..00000000 --- a/bin/celery_beat.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -e - -LOGLEVEL=${CELERY_LOGLEVEL:-INFO} - -mkdir -p celerybeat - -echo "Starting celery beat" -exec celery beat \ - --app openklant \ - -l $LOGLEVEL \ - --workdir src \ - -s ../celerybeat/beat diff --git a/bin/compile_dependencies.sh b/bin/compile_dependencies.sh index 0859d26f..f1d03361 100755 --- a/bin/compile_dependencies.sh +++ b/bin/compile_dependencies.sh @@ -23,7 +23,6 @@ export CUSTOM_COMPILE_COMMAND="./bin/compile_dependencies.sh" # Base (& prod) deps pip-compile \ --no-emit-index-url \ - --allow-unsafe \ "$@" \ requirements/base.in @@ -31,17 +30,15 @@ pip-compile \ pip-compile \ --no-emit-index-url \ --output-file requirements/ci.txt \ - --allow-unsafe \ "$@" \ requirements/base.txt \ requirements/test-tools.in \ requirements/docs.in -# Dev dependencies - exact same set as CI + some extra tooling +# Dev depedencies - exact same set as CI + some extra tooling pip-compile \ --no-emit-index-url \ --output-file requirements/dev.txt \ - --allow-unsafe \ "$@" \ requirements/ci.txt \ - requirements/dev.in + requirements/dev.in \ No newline at end of file diff --git a/bin/wait_for_db.sh b/bin/wait_for_db.sh new file mode 100644 index 00000000..f3899475 --- /dev/null +++ b/bin/wait_for_db.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +# Wait for the database container +# See: https://docs.docker.com/compose/startup-order/ +export PGHOST=${DB_HOST:-db} +export PGPORT=${DB_PORT:-5432} + +until pg_isready; do + >&2 echo "Waiting for database connection..." + sleep 1 +done + +>&2 echo "Database is up." \ No newline at end of file diff --git a/requirements/base.in b/requirements/base.in index 2515afd9..3b4a1538 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,38 +1,53 @@ # Core python libraries -psycopg2 # database driver -pytz # handle timezones +celery +click<8.1.0 # click>=8.1.0 causes issues with black https://github.com/psf/black/issues/2964 +jq +jsonschema +dictdiffer # Used to show diffs for audittrails in admin +markdown # used to render some markdown in code to html +psycopg2 +python-dateutil python-dotenv # environment variables for secrets python-decouple # processing of envvar configs +requests +requests-cache +zgw-consumers +self-certifi +bleach # Framework libraries -django~=3.2.0 -django-admin-index +django~=3.2.23 django-axes -django-better-admin-arrayfield -django-choices -django-cors-middleware -django-filter==2.4.0 +django-cors-headers +django-db-logger +django-extra-views +django-log-outgoing-requests +django-loose-fk +django-markup django-redis -django-rosetta -django-sniplates +django-privates +django-relativedelta mozilla-django-oidc-db -# maykin-django-two-factor-auth -# phonenumbers - -# API libraries -djangorestframework -# django-extra-fields -# django-filter -# drf-yasg # api documentation -vng-api-common[markdown_docs]==1.9.0 # pinned here before the move from drf-yasg to drf-spectacular -gemma-zds-client<2.0.0 # lots of breaking changes in 2.0.0 -zgw-consumers>=0.25.0 # newest with simple cert manager +# Admin and UI libraries +django-admin-index +django-sniplates +django-better-admin-arrayfield -# task queue -celery +# API libraries +djangorestframework~=3.12.0 +drf-extra-fields +django-filter +djangorestframework-camel-case~=1.2.0 +drf-yasg +drf-writable-nested +commonground-api-common +notifications-api-common +humanize +djangorestframework-inclusions # WSGI servers & monitoring - production oriented uwsgi -sentry-sdk # error monitoring -elastic-apm # Elastic APM integration +sentry_sdk # error monitoring sentry +flower # task monitoring +elastic-apm # Elastic APM integration \ No newline at end of file diff --git a/requirements/base.txt b/requirements/base.txt index 4fd3a56d..7241efd1 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,37 +1,53 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # ./bin/compile_dependencies.sh # -amqp==5.1.1 +amqp==5.2.0 # via kombu -asgiref==3.6.0 - # via django -attrs==22.2.0 - # via glom +asgiref==3.7.2 + # via + # django + # django-cors-headers +async-timeout==4.0.3 + # via redis +attrs==23.1.0 + # via + # cattrs + # glom + # jsonschema + # referencing + # requests-cache billiard==3.6.4.0 # via celery -boltons==23.0.0 +bleach==6.1.0 + # via -r requirements/base.in +boltons==23.1.1 # via # face # glom +cattrs==23.2.3 + # via requests-cache celery==5.2.7 # via # -r requirements/base.in + # flower # notifications-api-common -certifi==2022.12.7 +certifi==2023.11.17 # via # django-simple-certmanager # elastic-apm # requests + # self-certifi # sentry-sdk -cffi==1.15.1 +cffi==1.16.0 # via cryptography -charset-normalizer==3.1.0 +charset-normalizer==3.3.2 # via requests -click==8.1.3 +click==8.0.4 # via + # -r requirements/base.in # celery # click-didyoumean # click-plugins @@ -40,236 +56,310 @@ click-didyoumean==0.3.0 # via celery click-plugins==1.1.1 # via celery -click-repl==0.2.0 +click-repl==0.3.0 # via celery +commonground-api-common==1.12.0 + # via -r requirements/base.in coreapi==2.3.3 - # via drf-yasg -coreschema==0.0.4 # via - # coreapi - # drf-yasg -cryptography==39.0.2 + # commonground-api-common + # django-loose-fk +coreschema==0.0.4 + # via coreapi +cryptography==41.0.7 # via # django-simple-certmanager # josepy # mozilla-django-oidc # pyopenssl -django==3.2.18 +dictdiffer==0.9.0 + # via -r requirements/base.in +django==3.2.23 # via # -r requirements/base.in + # commonground-api-common # django-admin-index + # django-appconf # django-axes - # django-choices + # django-cors-headers + # django-db-logger + # django-extra-views # django-filter + # django-log-outgoing-requests + # django-loose-fk # django-markup # django-privates # django-redis # django-relativedelta # django-rest-framework-condition - # django-rosetta # django-sendfile2 # django-simple-certmanager # django-sniplates # django-solo # djangorestframework + # djangorestframework-inclusions + # drf-extra-fields # drf-nested-routers # drf-yasg # mozilla-django-oidc # mozilla-django-oidc-db # notifications-api-common - # vng-api-common # zgw-consumers -django-admin-index==2.0.2 +django-admin-index==3.1.0 # via -r requirements/base.in -django-axes==5.40.1 +django-appconf==1.0.6 + # via django-log-outgoing-requests +django-axes==6.1.1 # via -r requirements/base.in django-better-admin-arrayfield==1.4.2 # via # -r requirements/base.in # mozilla-django-oidc-db -django-choices==1.7.2 - # via - # -r requirements/base.in - # vng-api-common -django-cors-middleware==1.5.0 +django-cors-headers==4.3.1 + # via -r requirements/base.in +django-db-logger==0.1.13 # via -r requirements/base.in -django-filter==2.4.0 +django-extra-views==0.14.0 + # via -r requirements/base.in +django-filter==23.5 # via # -r requirements/base.in - # vng-api-common -django-ipware==5.0.0 - # via django-axes -django-markup==1.3 - # via vng-api-common + # commonground-api-common + # django-loose-fk +django-log-outgoing-requests==0.5.2 + # via -r requirements/base.in +django-loose-fk==1.0.3 + # via -r requirements/base.in +django-markup==1.8.1 + # via -r requirements/base.in django-ordered-model==3.7.4 # via django-admin-index -django-privates==1.5.0 - # via django-simple-certmanager -django-redis==5.2.0 +django-privates==2.0.0.post0 + # via + # -r requirements/base.in + # django-simple-certmanager +django-redis==5.4.0 # via -r requirements/base.in -django-relativedelta==1.1.2 - # via zgw-consumers +django-relativedelta==2.0.0 + # 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 + # via commonground-api-common django-sendfile2==0.7.0 # via django-privates -django-simple-certmanager==1.3.0 +django-simple-certmanager==1.4.1 # via zgw-consumers -django-sniplates==0.7.0 +django-sniplates==0.7.2 # via -r requirements/base.in -django-solo==2.0.0 +django-solo==2.1.0 # via + # commonground-api-common + # django-log-outgoing-requests # mozilla-django-oidc-db # notifications-api-common - # vng-api-common # zgw-consumers djangorestframework==3.12.4 # via # -r requirements/base.in + # commonground-api-common + # django-loose-fk + # djangorestframework-inclusions + # drf-extra-fields # drf-nested-routers # drf-yasg # notifications-api-common - # vng-api-common -djangorestframework-camel-case==1.4.2 +djangorestframework-camel-case==1.2.0 # via + # -r requirements/base.in + # commonground-api-common # notifications-api-common - # vng-api-common +djangorestframework-inclusions==1.2.0 + # via -r requirements/base.in +drf-extra-fields==3.7.0 + # via -r requirements/base.in drf-nested-routers==0.93.4 - # via vng-api-common -drf-yasg==1.21.5 - # via vng-api-common -elastic-apm==6.15.1 + # via commonground-api-common +drf-writable-nested==0.7.0 + # via -r requirements/base.in +drf-yasg==1.21.7 + # via + # -r requirements/base.in + # commonground-api-common +ecs-logging==2.1.0 + # via elastic-apm +elastic-apm==6.19.0 # via -r requirements/base.in +exceptiongroup==1.2.0 + # via cattrs face==20.1.1 # via glom -faker==18.3.0 +faker==20.1.0 # via zgw-consumers -gemma-zds-client==1.0.1 +filetype==1.2.0 + # via drf-extra-fields +flower==2.0.1 + # via -r requirements/base.in +gemma-zds-client==2.0.0 # via - # -r requirements/base.in + # commonground-api-common # notifications-api-common - # vng-api-common # zgw-consumers -glom==23.1.1 +glom==23.5.0 # via mozilla-django-oidc-db -idna==3.4 +humanize==4.9.0 + # via + # -r requirements/base.in + # flower +idna==3.6 # via requests inflection==0.5.1 # via drf-yasg iso-639==0.4.5 - # via vng-api-common + # via commonground-api-common isodate==0.6.1 - # via vng-api-common + # via commonground-api-common itypes==1.2.0 # via coreapi jinja2==3.1.2 # via coreschema -josepy==1.13.0 +josepy==1.14.0 # via mozilla-django-oidc -kombu==5.2.4 +jq==1.6.0 + # via -r requirements/base.in +jsonschema==4.20.0 + # via -r requirements/base.in +jsonschema-specifications==2023.11.2 + # via jsonschema +kombu==5.3.4 # via celery -markdown==3.4.3 - # via vng-api-common -markupsafe==2.1.2 +markdown==3.5.1 + # via -r requirements/base.in +markupsafe==2.1.3 # via jinja2 mozilla-django-oidc==2.0.0 # via mozilla-django-oidc-db mozilla-django-oidc-db==0.12.0 # via -r requirements/base.in -notifications-api-common==0.2.1 - # via vng-api-common +notifications-api-common==0.2.2 + # via + # -r requirements/base.in + # commonground-api-common oyaml==1.0 - # via vng-api-common -packaging==23.0 + # via commonground-api-common +packaging==23.2 # via drf-yasg -polib==1.2.0 - # via django-rosetta -prompt-toolkit==3.0.38 +platformdirs==4.1.0 + # via requests-cache +prometheus-client==0.19.0 + # via flower +prompt-toolkit==3.0.41 # via click-repl -psycopg2==2.9.5 +psycopg2==2.9.9 # via -r requirements/base.in pycparser==2.21 # via cffi -pyjwt==2.6.0 +pyjwt==2.8.0 # via + # commonground-api-common # gemma-zds-client - # vng-api-common -pyopenssl==23.0.0 +pyopenssl==23.3.0 # via # django-simple-certmanager # josepy # zgw-consumers python-dateutil==2.8.2 # via + # -r requirements/base.in # django-relativedelta # faker python-decouple==3.8 # via -r requirements/base.in python-dotenv==1.0.0 # via -r requirements/base.in -pytz==2022.7.1 +pytz==2023.3.post1 # via - # -r requirements/base.in # celery # django # drf-yasg -pyyaml==6.0 + # flower +pyyaml==6.0.1 # via + # commonground-api-common + # drf-yasg # gemma-zds-client # oyaml - # vng-api-common -redis==4.5.3 +redis==5.0.1 # via django-redis -requests==2.28.2 +referencing==0.31.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 # via + # -r requirements/base.in + # commonground-api-common # coreapi - # django-rosetta + # django-log-outgoing-requests # gemma-zds-client # mozilla-django-oidc + # requests-cache # requests-mock - # vng-api-common # zgw-consumers -requests-mock==1.10.0 +requests-cache==1.1.1 + # via -r requirements/base.in +requests-mock==1.11.0 # via zgw-consumers -ruamel-yaml==0.17.21 - # via drf-yasg -sentry-sdk==1.17.0 +rpds-py==0.13.2 + # via + # jsonschema + # referencing +self-certifi==1.0.0 + # via -r requirements/base.in +sentry-sdk==1.38.0 # via -r requirements/base.in six==1.16.0 # via - # click-repl - # django-choices - # django-markup + # bleach + # django-db-logger # isodate # python-dateutil # requests-mock -sqlparse==0.4.3 + # url-normalize +sqlparse==0.4.4 # via django +tornado==6.4 + # via flower +typing-extensions==4.8.0 + # via + # asgiref + # cattrs uritemplate==4.1.1 # via # coreapi # drf-yasg -urllib3==1.26.15 +url-normalize==1.4.3 + # via requests-cache +urllib3==2.1.0 # via # elastic-apm # requests + # requests-cache # sentry-sdk -uwsgi==2.0.21 +uwsgi==2.0.23 # via -r requirements/base.in -vine==5.0.0 +vine==5.1.0 # via # amqp # celery # kombu -vng-api-common[markdown_docs]==1.9.0 - # via -r requirements/base.in -wcwidth==0.2.6 +wcwidth==0.2.12 # via prompt-toolkit -wrapt==1.15.0 +webencodings==0.5.1 + # via bleach +wrapt==1.14.1 # via elastic-apm -zgw-consumers==0.25.0 +zgw-consumers==0.27.0 # via # -r requirements/base.in # notifications-api-common diff --git a/requirements/ci.txt b/requirements/ci.txt index 02a101f5..6d1044a2 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,65 +1,90 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # ./bin/compile_dependencies.sh # -amqp==5.1.1 +alabaster==0.7.13 + # via sphinx +amqp==5.2.0 # via # -c requirements/base.txt # -r requirements/base.txt # kombu -asgiref==3.6.0 +asgiref==3.7.2 # via # -c requirements/base.txt # -r requirements/base.txt # django -astroid==2.15.0 + # django-cors-headers +astroid==3.0.1 # via pylint -attrs==22.2.0 +async-timeout==4.0.3 # via # -c requirements/base.txt # -r requirements/base.txt + # redis +attrs==23.1.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # cattrs # glom -beautifulsoup4==4.12.0 + # jsonschema + # referencing + # requests-cache +babel==2.13.1 + # via sphinx +beautifulsoup4==4.12.2 # via webtest billiard==3.6.4.0 # via # -c requirements/base.txt # -r requirements/base.txt # celery -black==23.1.0 +black==23.11.0 # via -r requirements/test-tools.in -boltons==23.0.0 +bleach==6.1.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +boltons==23.1.1 # via # -c requirements/base.txt # -r requirements/base.txt # face # glom +cattrs==23.2.3 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # requests-cache celery==5.2.7 # via # -c requirements/base.txt # -r requirements/base.txt + # flower # notifications-api-common -certifi==2022.12.7 +certifi==2023.11.17 # via # -c requirements/base.txt # -r requirements/base.txt # django-simple-certmanager # elastic-apm # requests + # self-certifi # sentry-sdk -cffi==1.15.1 +cffi==1.16.0 # via # -c requirements/base.txt # -r requirements/base.txt # cryptography -charset-normalizer==3.1.0 +charset-normalizer==3.3.2 # via # -c requirements/base.txt # -r requirements/base.txt # requests -click==8.1.3 +click==8.0.4 # via # -c requirements/base.txt # -r requirements/base.txt @@ -78,25 +103,31 @@ click-plugins==1.1.1 # -c requirements/base.txt # -r requirements/base.txt # celery -click-repl==0.2.0 +click-repl==0.3.0 # via # -c requirements/base.txt # -r requirements/base.txt # celery +commonground-api-common==1.12.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +commonmark==0.9.1 + # via recommonmark coreapi==2.3.3 # via # -c requirements/base.txt # -r requirements/base.txt - # drf-yasg + # commonground-api-common + # django-loose-fk coreschema==0.0.4 # via # -c requirements/base.txt # -r requirements/base.txt # coreapi - # drf-yasg coverage==4.5.4 # via -r requirements/test-tools.in -cryptography==39.0.2 +cryptography==41.0.7 # via # -c requirements/base.txt # -r requirements/base.txt @@ -104,40 +135,55 @@ cryptography==39.0.2 # josepy # mozilla-django-oidc # pyopenssl -dill==0.3.6 +dictdiffer==0.9.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +dill==0.3.7 # via pylint -django==3.2.18 +django==3.2.23 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common # django-admin-index + # django-appconf # django-axes - # django-choices + # django-cors-headers + # django-db-logger + # django-extra-views # django-filter # django-jenkins + # django-log-outgoing-requests + # django-loose-fk # django-markup # django-privates # django-redis # django-relativedelta # django-rest-framework-condition - # django-rosetta # django-sendfile2 # django-simple-certmanager # django-sniplates # django-solo # djangorestframework + # djangorestframework-inclusions + # drf-extra-fields # drf-nested-routers # drf-yasg # mozilla-django-oidc # mozilla-django-oidc-db # notifications-api-common - # vng-api-common # zgw-consumers -django-admin-index==2.0.2 +django-admin-index==3.1.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +django-appconf==1.0.6 # via # -c requirements/base.txt # -r requirements/base.txt -django-axes==5.40.1 + # django-log-outgoing-requests +django-axes==6.1.1 # via # -c requirements/base.txt # -r requirements/base.txt @@ -146,47 +192,53 @@ django-better-admin-arrayfield==1.4.2 # -c requirements/base.txt # -r requirements/base.txt # mozilla-django-oidc-db -django-choices==1.7.2 +django-cors-headers==4.3.1 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -django-cors-middleware==1.5.0 +django-db-logger==0.1.13 # via # -c requirements/base.txt # -r requirements/base.txt -django-filter==2.4.0 +django-extra-views==0.14.0 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -django-ipware==5.0.0 +django-filter==23.5 # via # -c requirements/base.txt # -r requirements/base.txt - # django-axes + # commonground-api-common + # django-loose-fk django-jenkins==0.110.0 # via -r requirements/test-tools.in -django-markup==1.3 +django-log-outgoing-requests==0.5.2 + # via + # -c requirements/base.txt + # -r requirements/base.txt +django-loose-fk==1.0.3 + # via + # -c requirements/base.txt + # -r requirements/base.txt +django-markup==1.8.1 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common django-ordered-model==3.7.4 # via # -c requirements/base.txt # -r requirements/base.txt # django-admin-index -django-privates==1.5.0 +django-privates==2.0.0.post0 # via # -c requirements/base.txt # -r requirements/base.txt # django-simple-certmanager -django-redis==5.2.0 +django-redis==5.4.0 # via # -c requirements/base.txt # -r requirements/base.txt -django-relativedelta==1.1.2 +django-relativedelta==2.0.0 # via # -c requirements/base.txt # -r requirements/base.txt @@ -195,97 +247,141 @@ django-rest-framework-condition==0.1.1 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -django-rosetta==0.9.8 - # via - # -c requirements/base.txt - # -r requirements/base.txt + # commonground-api-common django-sendfile2==0.7.0 # via # -c requirements/base.txt # -r requirements/base.txt # django-privates -django-simple-certmanager==1.3.0 +django-simple-certmanager==1.4.1 # via # -c requirements/base.txt # -r requirements/base.txt # zgw-consumers -django-sniplates==0.7.0 +django-sniplates==0.7.2 # via # -c requirements/base.txt # -r requirements/base.txt -django-solo==2.0.0 +django-solo==2.1.0 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common + # django-log-outgoing-requests # mozilla-django-oidc-db # notifications-api-common - # vng-api-common # zgw-consumers -django-webtest==1.9.10 +django-webtest==1.9.11 # via -r requirements/test-tools.in djangorestframework==3.12.4 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common + # django-loose-fk + # djangorestframework-inclusions + # drf-extra-fields # drf-nested-routers # drf-yasg # notifications-api-common - # vng-api-common -djangorestframework-camel-case==1.4.2 +djangorestframework-camel-case==1.2.0 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common # notifications-api-common - # vng-api-common +djangorestframework-inclusions==1.2.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +docutils==0.18.1 + # via + # recommonmark + # sphinx + # sphinx-rtd-theme + # sphinx-tabs +drf-extra-fields==3.7.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt drf-nested-routers==0.93.4 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -drf-yasg==1.21.5 + # commonground-api-common +drf-writable-nested==0.7.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +drf-yasg==1.21.7 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -elastic-apm==6.15.1 + # commonground-api-common +ecs-logging==2.1.0 # via # -c requirements/base.txt # -r requirements/base.txt + # elastic-apm +elastic-apm==6.19.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +exceptiongroup==1.2.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # cattrs face==20.1.1 # via # -c requirements/base.txt # -r requirements/base.txt # glom -factory-boy==3.2.1 +factory-boy==3.3.0 # via -r requirements/test-tools.in -faker==18.3.0 +faker==20.1.0 # via # -c requirements/base.txt # -r requirements/base.txt # factory-boy # zgw-consumers -flake8==6.0.0 +filetype==1.2.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # drf-extra-fields +flake8==6.1.0 # via -r requirements/test-tools.in -freezegun==1.2.2 +flower==2.0.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt +freezegun==1.3.1 # via -r requirements/test-tools.in -gemma-zds-client==1.0.1 +gemma-zds-client==2.0.0 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common # notifications-api-common - # vng-api-common # zgw-consumers -glom==23.1.1 +glom==23.5.0 # via # -c requirements/base.txt # -r requirements/base.txt # mozilla-django-oidc-db -idna==3.4 +humanize==4.9.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # flower +idna==3.6 # via # -c requirements/base.txt # -r requirements/base.txt # requests +imagesize==1.4.1 + # via sphinx inflection==0.5.1 # via # -c requirements/base.txt @@ -295,12 +391,12 @@ iso-639==0.4.5 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common + # commonground-api-common isodate==0.6.1 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common + # commonground-api-common isort==5.12.0 # via # -r requirements/test-tools.in @@ -315,24 +411,36 @@ jinja2==3.1.2 # -c requirements/base.txt # -r requirements/base.txt # coreschema -josepy==1.13.0 + # sphinx +josepy==1.14.0 # via # -c requirements/base.txt # -r requirements/base.txt # mozilla-django-oidc -kombu==5.2.4 +jq==1.6.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +jsonschema==4.20.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +jsonschema-specifications==2023.11.2 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # jsonschema +kombu==5.3.4 # via # -c requirements/base.txt # -r requirements/base.txt # celery -lazy-object-proxy==1.9.0 - # via astroid -markdown==3.4.3 +markdown==3.5.1 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -markupsafe==2.1.2 + # sphinx-markdown-tables +markupsafe==2.1.3 # via # -c requirements/base.txt # -r requirements/base.txt @@ -352,62 +460,70 @@ mozilla-django-oidc-db==0.12.0 # -r requirements/base.txt mypy-extensions==1.0.0 # via black -notifications-api-common==0.2.1 +notifications-api-common==0.2.2 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common + # commonground-api-common oyaml==1.0 # via # -c requirements/base.txt # -r requirements/base.txt - # vng-api-common -packaging==23.0 + # commonground-api-common +packaging==23.2 # via # -c requirements/base.txt # -r requirements/base.txt # black # drf-yasg -pathspec==0.11.1 + # sphinx +pathspec==0.11.2 # via black pep8==1.7.1 # via -r requirements/test-tools.in -platformdirs==3.1.1 +platformdirs==4.1.0 # via + # -c requirements/base.txt + # -r requirements/base.txt # black # pylint -polib==1.2.0 + # requests-cache +prometheus-client==0.19.0 # via # -c requirements/base.txt # -r requirements/base.txt - # django-rosetta -prompt-toolkit==3.0.38 + # flower +prompt-toolkit==3.0.41 # via # -c requirements/base.txt # -r requirements/base.txt # click-repl -psycopg2==2.9.5 +psycopg2==2.9.9 # via # -c requirements/base.txt # -r requirements/base.txt -pycodestyle==2.10.0 +pycodestyle==2.11.1 # via flake8 pycparser==2.21 # via # -c requirements/base.txt # -r requirements/base.txt # cffi -pyflakes==3.0.1 +pyflakes==3.1.0 # via flake8 -pyjwt==2.6.0 +pygments==2.17.2 + # via + # sphinx + # sphinx-tabs +pyjwt==2.8.0 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common # gemma-zds-client - # vng-api-common -pylint==2.17.1 +pylint==3.0.2 # via -r requirements/test-tools.in -pyopenssl==23.0.0 +pyopenssl==23.3.0 # via # -c requirements/base.txt # -r requirements/base.txt @@ -429,47 +545,69 @@ python-dotenv==1.0.0 # via # -c requirements/base.txt # -r requirements/base.txt -pytz==2022.7.1 +pytz==2023.3.post1 # via # -c requirements/base.txt # -r requirements/base.txt # celery # django # drf-yasg -pyyaml==6.0 + # flower +pyyaml==6.0.1 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common + # drf-yasg # gemma-zds-client # oyaml - # vng-api-common -redis==4.5.3 +recommonmark==0.7.1 + # via -r requirements/docs.in +redis==5.0.1 # via # -c requirements/base.txt # -r requirements/base.txt # django-redis -requests==2.28.2 +referencing==0.31.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # jsonschema + # jsonschema-specifications +requests==2.31.0 # via # -c requirements/base.txt # -r requirements/base.txt + # commonground-api-common # coreapi - # django-rosetta + # django-log-outgoing-requests # gemma-zds-client # mozilla-django-oidc + # requests-cache # requests-mock - # vng-api-common + # sphinx # zgw-consumers -requests-mock==1.10.0 +requests-cache==1.1.1 # via + # -c requirements/base.txt + # -r requirements/base.txt +requests-mock==1.11.0 + # via + # -c requirements/base.txt # -r requirements/base.txt # -r requirements/test-tools.in # zgw-consumers -ruamel-yaml==0.17.21 +rpds-py==0.13.2 # via # -c requirements/base.txt # -r requirements/base.txt - # drf-yasg -sentry-sdk==1.17.0 + # jsonschema + # referencing +self-certifi==1.0.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +sentry-sdk==1.38.0 # via # -c requirements/base.txt # -r requirements/base.txt @@ -477,71 +615,128 @@ six==1.16.0 # via # -c requirements/base.txt # -r requirements/base.txt - # click-repl - # django-choices - # django-markup + # bleach + # django-db-logger # isodate # python-dateutil # requests-mock -soupsieve==2.4 + # url-normalize +snowballstemmer==2.2.0 + # via sphinx +soupsieve==2.5 # via beautifulsoup4 -sqlparse==0.4.3 +sphinx==7.2.6 + # via + # -r requirements/docs.in + # recommonmark + # sphinx-rtd-theme + # sphinx-tabs + # sphinxcontrib-applehelp + # sphinxcontrib-devhelp + # sphinxcontrib-htmlhelp + # sphinxcontrib-jquery + # sphinxcontrib-qthelp + # sphinxcontrib-serializinghtml +sphinx-markdown-tables==0.0.17 + # via -r requirements/docs.in +sphinx-rtd-theme==2.0.0 + # via -r requirements/docs.in +sphinx-tabs==3.4.4 + # via -r requirements/docs.in +sphinxcontrib-applehelp==1.0.7 + # via sphinx +sphinxcontrib-devhelp==1.0.5 + # via sphinx +sphinxcontrib-htmlhelp==2.0.4 + # via sphinx +sphinxcontrib-jquery==4.1 + # via sphinx-rtd-theme +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.6 + # via sphinx +sphinxcontrib-serializinghtml==1.1.9 + # via sphinx +sqlparse==0.4.4 # via # -c requirements/base.txt # -r requirements/base.txt # django -tblib==1.7.0 +tblib==3.0.0 # via -r requirements/test-tools.in -tomlkit==0.11.6 +tomli==2.0.1 + # via + # black + # pylint +tomlkit==0.12.3 # via pylint +tornado==6.4 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # flower +typing-extensions==4.8.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # asgiref + # astroid + # black + # cattrs uritemplate==4.1.1 # via # -c requirements/base.txt # -r requirements/base.txt # coreapi # drf-yasg -urllib3==1.26.15 +url-normalize==1.4.3 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # requests-cache +urllib3==2.1.0 # via # -c requirements/base.txt # -r requirements/base.txt # elastic-apm # requests + # requests-cache # sentry-sdk -uwsgi==2.0.21 +uwsgi==2.0.23 # via # -c requirements/base.txt # -r requirements/base.txt -vine==5.0.0 +vine==5.1.0 # via # -c requirements/base.txt # -r requirements/base.txt # amqp # celery # kombu -vng-api-common[markdown_docs]==1.9.0 - # via - # -c requirements/base.txt - # -r requirements/base.txt waitress==2.1.2 # via # -r requirements/test-tools.in # webtest -wcwidth==0.2.6 +wcwidth==0.2.12 # via # -c requirements/base.txt # -r requirements/base.txt # prompt-toolkit +webencodings==0.5.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # bleach webob==1.8.7 # via webtest webtest==3.0.0 # via django-webtest -wrapt==1.15.0 +wrapt==1.14.1 # via # -c requirements/base.txt # -r requirements/base.txt - # astroid # elastic-apm -zgw-consumers==0.25.0 +zgw-consumers==0.27.0 # via # -c requirements/base.txt # -r requirements/base.txt diff --git a/requirements/dev.txt b/requirements/dev.txt index c6160dbb..45be326c 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,34 +1,50 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # ./bin/compile_dependencies.sh # alabaster==0.7.13 - # via sphinx -amqp==5.1.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +amqp==5.2.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # kombu -asgiref==3.6.0 +asgiref==3.7.2 # via # -c requirements/ci.txt # -r requirements/ci.txt # django -astroid==2.15.0 + # django-cors-headers +astroid==3.0.1 # via # -c requirements/ci.txt # -r requirements/ci.txt # pylint -attrs==22.2.0 +async-timeout==4.0.3 # via # -c requirements/ci.txt # -r requirements/ci.txt + # redis +attrs==23.1.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # cattrs # glom -babel==2.12.1 - # via sphinx -beautifulsoup4==4.12.0 + # jsonschema + # referencing + # requests-cache +babel==2.13.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +beautifulsoup4==4.12.2 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -38,42 +54,53 @@ billiard==3.6.4.0 # -c requirements/ci.txt # -r requirements/ci.txt # celery -black==23.1.0 +black==23.11.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -boltons==23.0.0 +bleach==6.1.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +boltons==23.1.1 # via # -c requirements/ci.txt # -r requirements/ci.txt # face # glom -build==0.10.0 +build==1.0.3 # via pip-tools +cattrs==23.2.3 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # requests-cache celery==5.2.7 # via # -c requirements/ci.txt # -r requirements/ci.txt + # flower # notifications-api-common -certifi==2022.12.7 +certifi==2023.11.17 # via # -c requirements/ci.txt # -r requirements/ci.txt # django-simple-certmanager # elastic-apm # requests + # self-certifi # sentry-sdk -cffi==1.15.1 +cffi==1.16.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # cryptography -charset-normalizer==3.1.0 +charset-normalizer==3.3.2 # via # -c requirements/ci.txt # -r requirements/ci.txt # requests -click==8.1.3 +click==8.0.4 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -93,27 +120,36 @@ click-plugins==1.1.1 # -c requirements/ci.txt # -r requirements/ci.txt # celery -click-repl==0.2.0 +click-repl==0.3.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # celery +commonground-api-common==1.12.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +commonmark==0.9.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # recommonmark coreapi==2.3.3 # via # -c requirements/ci.txt # -r requirements/ci.txt - # drf-yasg + # commonground-api-common + # django-loose-fk coreschema==0.0.4 # via # -c requirements/ci.txt # -r requirements/ci.txt # coreapi - # drf-yasg coverage==4.5.4 # via # -c requirements/ci.txt # -r requirements/ci.txt -cryptography==39.0.2 +cryptography==41.0.7 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -123,46 +159,61 @@ cryptography==39.0.2 # pyopenssl ddt-api-calls==0.3.2 # via -r requirements/dev.in -dill==0.3.6 +dictdiffer==0.9.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +dill==0.3.7 # via # -c requirements/ci.txt # -r requirements/ci.txt # pylint -django==3.2.18 +django==3.2.23 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common # ddt-api-calls # django-admin-index + # django-appconf # django-axes - # django-choices + # django-cors-headers + # django-db-logger # django-debug-toolbar # django-extensions + # django-extra-views # django-filter # django-jenkins + # django-log-outgoing-requests + # django-loose-fk # django-markup # django-privates # django-redis # django-relativedelta # django-rest-framework-condition - # django-rosetta # django-sendfile2 # django-simple-certmanager # django-sniplates # django-solo # djangorestframework + # djangorestframework-inclusions + # drf-extra-fields # drf-nested-routers # drf-yasg # mozilla-django-oidc # mozilla-django-oidc-db # notifications-api-common - # vng-api-common # zgw-consumers -django-admin-index==2.0.2 +django-admin-index==3.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -django-axes==5.40.1 +django-appconf==1.0.6 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # django-log-outgoing-requests +django-axes==6.1.1 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -171,53 +222,59 @@ django-better-admin-arrayfield==1.4.2 # -c requirements/ci.txt # -r requirements/ci.txt # mozilla-django-oidc-db -django-choices==1.7.2 +django-cors-headers==4.3.1 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -django-cors-middleware==1.5.0 +django-db-logger==0.1.13 # via # -c requirements/ci.txt # -r requirements/ci.txt -django-debug-toolbar==3.5.0 +django-debug-toolbar==4.2.0 # via -r requirements/dev.in -django-extensions==3.2.1 +django-extensions==3.2.3 # via -r requirements/dev.in -django-filter==2.4.0 +django-extra-views==0.14.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -django-ipware==5.0.0 +django-filter==23.5 # via # -c requirements/ci.txt # -r requirements/ci.txt - # django-axes + # commonground-api-common + # django-loose-fk django-jenkins==0.110.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -django-markup==1.3 +django-log-outgoing-requests==0.5.2 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +django-loose-fk==1.0.3 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +django-markup==1.8.1 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common django-ordered-model==3.7.4 # via # -c requirements/ci.txt # -r requirements/ci.txt # django-admin-index -django-privates==1.5.0 +django-privates==2.0.0.post0 # via # -c requirements/ci.txt # -r requirements/ci.txt # django-simple-certmanager -django-redis==5.2.0 +django-redis==5.4.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -django-relativedelta==1.1.2 +django-relativedelta==2.0.0 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -226,34 +283,31 @@ django-rest-framework-condition==0.1.1 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -django-rosetta==0.9.8 - # via - # -c requirements/ci.txt - # -r requirements/ci.txt + # commonground-api-common django-sendfile2==0.7.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # django-privates -django-simple-certmanager==1.3.0 +django-simple-certmanager==1.4.1 # via # -c requirements/ci.txt # -r requirements/ci.txt # zgw-consumers -django-sniplates==0.7.0 +django-sniplates==0.7.2 # via # -c requirements/ci.txt # -r requirements/ci.txt -django-solo==2.0.0 +django-solo==2.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common + # django-log-outgoing-requests # mozilla-django-oidc-db # notifications-api-common - # vng-api-common # zgw-consumers -django-webtest==1.9.10 +django-webtest==1.9.11 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -261,76 +315,122 @@ djangorestframework==3.12.4 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common + # django-loose-fk + # djangorestframework-inclusions + # drf-extra-fields # drf-nested-routers # drf-yasg # notifications-api-common - # vng-api-common -djangorestframework-camel-case==1.4.2 +djangorestframework-camel-case==1.2.0 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common # notifications-api-common - # vng-api-common +djangorestframework-inclusions==1.2.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt docutils==0.18.1 # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # recommonmark # sphinx # sphinx-rtd-theme + # sphinx-tabs +drf-extra-fields==3.7.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt drf-nested-routers==0.93.4 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -drf-yasg==1.21.5 + # commonground-api-common +drf-writable-nested==0.7.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +drf-yasg==1.21.7 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # commonground-api-common +ecs-logging==2.1.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # elastic-apm +elastic-apm==6.19.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -elastic-apm==6.15.1 +exceptiongroup==1.2.0 # via # -c requirements/ci.txt # -r requirements/ci.txt + # cattrs face==20.1.1 # via # -c requirements/ci.txt # -r requirements/ci.txt # glom -factory-boy==3.2.1 +factory-boy==3.3.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -faker==18.3.0 +faker==20.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # factory-boy # zgw-consumers -flake8==6.0.0 +filetype==1.2.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # drf-extra-fields +flake8==6.1.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +flower==2.0.1 # via # -c requirements/ci.txt # -r requirements/ci.txt -freezegun==1.2.2 +freezegun==1.3.1 # via # -c requirements/ci.txt # -r requirements/ci.txt -gemma-zds-client==1.0.1 +gemma-zds-client==2.0.0 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common # notifications-api-common - # vng-api-common # zgw-consumers -glom==23.1.1 +glom==23.5.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # mozilla-django-oidc-db -idna==3.4 +humanize==4.9.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # flower +idna==3.6 # via # -c requirements/ci.txt # -r requirements/ci.txt # requests imagesize==1.4.1 - # via sphinx + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx inflection==0.5.1 # via # -c requirements/ci.txt @@ -340,12 +440,12 @@ iso-639==0.4.5 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common + # commonground-api-common isodate==0.6.1 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common + # commonground-api-common isort==5.12.0 # via # -c requirements/ci.txt @@ -362,27 +462,35 @@ jinja2==3.1.2 # -r requirements/ci.txt # coreschema # sphinx -josepy==1.13.0 +josepy==1.14.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # mozilla-django-oidc -kombu==5.2.4 +jq==1.6.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # celery -lazy-object-proxy==1.9.0 +jsonschema==4.20.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # astroid -markdown==3.4.3 +jsonschema-specifications==2023.11.2 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -markupsafe==2.1.2 + # jsonschema +kombu==5.3.4 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # celery +markdown==3.5.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx-markdown-tables +markupsafe==2.1.3 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -407,17 +515,17 @@ mypy-extensions==1.0.0 # -c requirements/ci.txt # -r requirements/ci.txt # black -notifications-api-common==0.2.1 +notifications-api-common==0.2.2 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common + # commonground-api-common oyaml==1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # vng-api-common -packaging==23.0 + # commonground-api-common +packaging==23.2 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -425,7 +533,7 @@ packaging==23.0 # build # drf-yasg # sphinx -pathspec==0.11.1 +pathspec==0.11.2 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -434,29 +542,30 @@ pep8==1.7.1 # via # -c requirements/ci.txt # -r requirements/ci.txt -pip-tools==6.12.3 +pip-tools==7.3.0 # via -r requirements/dev.in -platformdirs==3.1.1 +platformdirs==4.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # black # pylint -polib==1.2.0 + # requests-cache +prometheus-client==0.19.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # django-rosetta -prompt-toolkit==3.0.38 + # flower +prompt-toolkit==3.0.41 # via # -c requirements/ci.txt # -r requirements/ci.txt # click-repl -psycopg2==2.9.5 +psycopg2==2.9.9 # via # -c requirements/ci.txt # -r requirements/ci.txt -pycodestyle==2.10.0 +pycodestyle==2.11.1 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -466,24 +575,28 @@ pycparser==2.21 # -c requirements/ci.txt # -r requirements/ci.txt # cffi -pyflakes==3.0.1 +pyflakes==3.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # flake8 -pygments==2.14.0 - # via sphinx -pyjwt==2.6.0 +pygments==2.17.2 # via # -c requirements/ci.txt # -r requirements/ci.txt + # sphinx + # sphinx-tabs +pyjwt==2.8.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # commonground-api-common # gemma-zds-client - # vng-api-common -pylint==2.17.1 +pylint==3.0.2 # via # -c requirements/ci.txt # -r requirements/ci.txt -pyopenssl==23.0.0 +pyopenssl==23.3.0 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -507,50 +620,72 @@ python-dotenv==1.0.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -pytz==2022.7.1 +pytz==2023.3.post1 # via # -c requirements/ci.txt # -r requirements/ci.txt # celery # django # drf-yasg -pyyaml==6.0 + # flower +pyyaml==6.0.1 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common + # drf-yasg # gemma-zds-client # oyaml - # vng-api-common -redis==4.5.3 +recommonmark==0.7.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +redis==5.0.1 # via # -c requirements/ci.txt # -r requirements/ci.txt # django-redis -requests==2.28.2 +referencing==0.31.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # jsonschema + # jsonschema-specifications +requests==2.31.0 # via # -c requirements/ci.txt # -r requirements/ci.txt + # commonground-api-common # coreapi # ddt-api-calls - # django-rosetta + # django-log-outgoing-requests # gemma-zds-client # mozilla-django-oidc + # requests-cache # requests-mock # sphinx - # vng-api-common # zgw-consumers -requests-mock==1.10.0 +requests-cache==1.1.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +requests-mock==1.11.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # ddt-api-calls # zgw-consumers -ruamel-yaml==0.17.21 +rpds-py==0.13.2 # via # -c requirements/ci.txt # -r requirements/ci.txt - # drf-yasg -sentry-sdk==1.17.0 + # jsonschema + # referencing +self-certifi==1.0.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +sentry-sdk==1.38.0 # via # -c requirements/ci.txt # -r requirements/ci.txt @@ -558,93 +693,166 @@ six==1.16.0 # via # -c requirements/ci.txt # -r requirements/ci.txt - # click-repl - # django-choices - # django-markup + # bleach + # django-db-logger # isodate # python-dateutil # requests-mock + # url-normalize snowballstemmer==2.2.0 - # via sphinx -soupsieve==2.4 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +soupsieve==2.5 # via # -c requirements/ci.txt # -r requirements/ci.txt # beautifulsoup4 -sphinx==6.1.3 +sphinx==7.2.6 # via + # -c requirements/ci.txt + # -r requirements/ci.txt # -r requirements/dev.in + # recommonmark # sphinx-rtd-theme + # sphinx-tabs + # sphinxcontrib-applehelp + # sphinxcontrib-devhelp + # sphinxcontrib-htmlhelp # sphinxcontrib-jquery -sphinx-rtd-theme==1.2.0 - # via -r requirements/dev.in -sphinxcontrib-applehelp==1.0.4 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.1 - # via sphinx + # sphinxcontrib-qthelp + # sphinxcontrib-serializinghtml +sphinx-markdown-tables==0.0.17 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +sphinx-rtd-theme==2.0.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # -r requirements/dev.in +sphinx-tabs==3.4.4 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt +sphinxcontrib-applehelp==1.0.7 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +sphinxcontrib-devhelp==1.0.5 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +sphinxcontrib-htmlhelp==2.0.4 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx sphinxcontrib-jquery==4.1 - # via sphinx-rtd-theme + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx-rtd-theme sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -sqlparse==0.4.3 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +sphinxcontrib-qthelp==1.0.6 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +sphinxcontrib-serializinghtml==1.1.9 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # sphinx +sqlparse==0.4.4 # via # -c requirements/ci.txt # -r requirements/ci.txt # django # django-debug-toolbar -tblib==1.7.0 +tblib==3.0.0 # via # -c requirements/ci.txt # -r requirements/ci.txt -tomlkit==0.11.6 +tomli==2.0.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # black + # build + # pip-tools + # pylint + # pyproject-hooks +tomlkit==0.12.3 # via # -c requirements/ci.txt # -r requirements/ci.txt # pylint +tornado==6.4 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # flower +typing-extensions==4.8.0 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # asgiref + # astroid + # black + # cattrs uritemplate==4.1.1 # via # -c requirements/ci.txt # -r requirements/ci.txt # coreapi # drf-yasg -urllib3==1.26.15 +url-normalize==1.4.3 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # requests-cache +urllib3==2.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # elastic-apm # requests + # requests-cache # sentry-sdk -uwsgi==2.0.21 +uwsgi==2.0.23 # via # -c requirements/ci.txt # -r requirements/ci.txt -vine==5.0.0 +vine==5.1.0 # via # -c requirements/ci.txt # -r requirements/ci.txt # amqp # celery # kombu -vng-api-common[markdown_docs]==1.9.0 - # via - # -c requirements/ci.txt - # -r requirements/ci.txt waitress==2.1.2 # via # -c requirements/ci.txt # -r requirements/ci.txt # webtest -wcwidth==0.2.6 +wcwidth==0.2.12 # via # -c requirements/ci.txt # -r requirements/ci.txt # prompt-toolkit +webencodings==0.5.1 + # via + # -c requirements/ci.txt + # -r requirements/ci.txt + # bleach webob==1.8.7 # via # -c requirements/ci.txt @@ -655,15 +863,14 @@ webtest==3.0.0 # -c requirements/ci.txt # -r requirements/ci.txt # django-webtest -wheel==0.40.0 +wheel==0.42.0 # via pip-tools -wrapt==1.15.0 +wrapt==1.14.1 # via # -c requirements/ci.txt # -r requirements/ci.txt - # astroid # elastic-apm -zgw-consumers==0.25.0 +zgw-consumers==0.27.0 # via # -c requirements/ci.txt # -r requirements/ci.txt diff --git a/requirements/production.txt b/requirements/production.txt index a3e81b8d..9c9dec9e 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -1 +1 @@ --r base.txt +-r base.txt \ No newline at end of file diff --git a/requirements/test.txt b/requirements/test.txt deleted file mode 100644 index 0ceea454..00000000 --- a/requirements/test.txt +++ /dev/null @@ -1 +0,0 @@ --r production.txt diff --git a/src/openklant/accounts/migrations/0002_auto_20211116_0918.py b/src/openklant/accounts/migrations/0002_auto_20211116_0918.py index 95da71ee..20150fd2 100644 --- a/src/openklant/accounts/migrations/0002_auto_20211116_0918.py +++ b/src/openklant/accounts/migrations/0002_auto_20211116_0918.py @@ -22,7 +22,7 @@ def forward(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ ("accounts", "0001_initial"), - ("admin_index", "0003_auto_20200724_1516"), + ("admin_index", "0006_auto_20230503_1910"), ("contactmomenten", "0001_initial"), ("klanten", "0001_initial"), ] diff --git a/src/openklant/components/klantinteracties/models/constants.py b/src/openklant/components/klantinteracties/models/constants.py index 58f311bb..3ea018c6 100644 --- a/src/openklant/components/klantinteracties/models/constants.py +++ b/src/openklant/components/klantinteracties/models/constants.py @@ -1,52 +1,47 @@ +from django.db.models import TextChoices from django.utils.translation import gettext_lazy as _ -from djchoices import ChoiceItem, DjangoChoices +class Taakstatus(TextChoices): + te_verwerken = "te_verwerken", _("Het verzoek is afgehandeld.") + verwerkt = "verwerkt", _("Het verzoek ID buiten behandeling gesteld.") -class Taakstatus(DjangoChoices): - te_verwerken = ChoiceItem("te_verwerken", _("Het verzoek is afgehandeld.")) - verwerkt = ChoiceItem("verwerkt", _("Het verzoek ID buiten behandeling gesteld.")) +class SoortBezoekadres(TextChoices): + binnenlands_adres = "binnenlands_adres", _("Binnenlands adres") + buitenlands_adres = "buitenlands_adres", _("Buitenlands adres") -class SoortBezoekadres(DjangoChoices): - binnenlands_adres = ChoiceItem("binnenlands_adres", _("Binnenlands adres")) - buitenlands_adres = ChoiceItem("binnenlands_adres", _("Buitenlands adres")) +class AanduidingBijHuisnummer(TextChoices): + bij = "bij", _("Bij") + tegenover = "tegenover", _("Tegenover") -class AanduidingBijHuisnummer(DjangoChoices): - bij = ChoiceItem("bij", _("Bij")) - tegenover = ChoiceItem("tegenover", _("Tegenover")) +class SoortCorrespondentieadres(TextChoices): + postbusnummer = "postbusnummer", _("Postbusnummer") + antwoordnummer = "antwoordnummer", _("Antwoordnummer") + binnenlands_adres = "binnenlands_adres", _("Binnenlands adres") + buitenlands_adres = "buitenlands_adres", _("Buitenlands adres") -class SoortCorrespondentieadres(DjangoChoices): - postbusnummer = ChoiceItem("postbusnummer", _("Postbusnummer")) - antwoordnummer = ChoiceItem("antwoordnummer", _("Antwoordnummer")) - binnenlands_adres = ChoiceItem("binnenlands_adres", _("Binnenlands adres")) - buitenlands_adres = ChoiceItem("buitenlands_adres", _("Buitenlands adres")) +class SoortActor(TextChoices): + medewerker = "medewerker", _("Medewerker") + geautomatiseerde_actor = "geautomatiseerde_actor", _("Geautomatiseerde actor") + organisatorische_eenheid = "organisatorische_eenheid", _("Organisatorische eenheid") -class SoortActor(DjangoChoices): - medewerker = ChoiceItem("medewerker", _("Medewerker")) - geautomatiseerde_actor = ChoiceItem( - "geautomatiseerde_actor", _("Geautomatiseerde actor") - ) - organisatorische_eenheid = ChoiceItem( - "organisatorische_eenheid", _("Organisatorische eenheid") - ) +class SoortInhoudsdeel(TextChoices): + informatieobject = "informatieobject", _("Informatieobject") + overig_object = "overig_object", _("Overig object") + tekst = "tekst", _("Tekst") -class SoortInhoudsdeel(DjangoChoices): - informatieobject = ChoiceItem("informatieobject", _("Informatieobject")) - overig_object = ChoiceItem("overig_object", _("Overig object")) - tekst = ChoiceItem("tekst", _("Tekst")) +class SoortPartij(TextChoices): + persoon = "persoon", _("Persoon") + organisatie = "organisatie", _("Organisatie") + contactpersoon = "contactpersoon", _("Contactpersoon") -class SoortPartij(DjangoChoices): - persoon = ChoiceItem("persoon", _("Persoon")) - organisatie = ChoiceItem("organisatie", _("Organisatie")) - contactpersoon = ChoiceItem("contactpersoon", _("Contactpersoon")) - -class Klantcontrol(DjangoChoices): - vertegenwoordiger = ChoiceItem("vertegenwoordiger", _("Vertegenwoordiger")) - klant = ChoiceItem("klant", _("Klant")) +class Klantcontrol(TextChoices): + vertegenwoordiger = "vertegenwoordiger", _("Vertegenwoordiger") + klant = "klant", _("Klant") diff --git a/src/openklant/components/legacy/contactmomenten/api/tests/files/zaken.yaml b/src/openklant/components/legacy/contactmomenten/api/tests/files/zaken.yaml new file mode 100644 index 00000000..c6019f5f --- /dev/null +++ b/src/openklant/components/legacy/contactmomenten/api/tests/files/zaken.yaml @@ -0,0 +1,8018 @@ +openapi: 3.0.0 +info: + title: Zaken API + description: | + Een API om een zaakregistratiecomponent (ZRC) te benaderen. + + De ZAAK is het kernobject in deze API, waaraan verschillende andere + resources gerelateerd zijn. De Zaken API werkt samen met andere API's voor + Zaakgericht werken om tot volledige functionaliteit te komen. + + **Afhankelijkheden** + + Deze API is afhankelijk van: + + * Catalogi API + * Notificaties API + * Documenten API *(optioneel)* + * Besluiten API *(optioneel)* + * Autorisaties API *(optioneel)* + + + ### Autorisatie + + Deze API vereist autorisatie. + + _Zelf een token genereren_ + + De tokens die gebruikt worden voor autorisatie zijn [JWT's](https://jwt.io) (JSON web + token). In de API calls moeten deze gebruikt worden in de `Authorization` + header: + + ``` + Authorization: Bearer + ``` + + Om een JWT te genereren heb je een `client ID` en een `secret` nodig. Het JWT + moet gebouwd worden volgens het `HS256` algoritme. De vereiste payload is: + + ```json + { + "iss": "", + "iat": 1572863906, + "client_id": "", + "user_id": "", + "user_representation": "" + } + ``` + + Als `issuer` gebruik je dus je eigen client ID. De `iat` timestamp is een + UNIX-timestamp die aangeeft op welk moment het token gegenereerd is. + + `user_id` en `user_representation` zijn nodig voor de audit trails. Het zijn + vrije velden met als enige beperking dat de lengte maximaal de lengte van + de overeenkomstige velden in de audit trail resources is (zie rest API spec). + + + ### Notificaties + + Deze API publiceert notificaties op het kanaal `zaken`. + + **Main resource** + + `zaak` + + + + **Kenmerken** + + * `bronorganisatie`: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie die de zaak heeft gecreeerd. Dit moet een geldig RSIN zijn van 9 nummers en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef + * `zaaktype`: URL-referentie naar het ZAAKTYPE (in de Catalogi API). + * `vertrouwelijkheidaanduiding`: Aanduiding van de mate waarin het zaakdossier van de ZAAK voor de openbaarheid bestemd is. + + **Resources en acties** + - `zaak`: create, update, destroy + - `status`: create + - `zaakobject`: create, update, destroy + - `zaakinformatieobject`: create + - `zaakeigenschap`: create, update, destroy + - `klantcontact`: create + - `rol`: create, destroy + - `resultaat`: create, update, destroy + - `zaakbesluit`: create + - `zaakcontactmoment`: create + - `zaakverzoek`: create + + + **Handige links** + + * [API-documentatie](https://vng-realisatie.github.io/gemma-zaken/standaard/) + * [Open Zaak documentatie](https://open-zaak.readthedocs.io/en/latest/) + * [Zaakgericht werken](https://www.vngrealisatie.nl/producten/api-standaarden-zaakgericht-werken) + * [Open Zaak GitHub](https://github.com/open-zaak/open-zaak) + contact: + url: https://www.maykinmedia.nl + email: support@maykinmedia.nl + license: + name: EUPL 1.2 + url: https://opensource.org/licenses/EUPL-1.2 + version: 1.2.0 +security: + - JWT-Claims: [] +paths: + /klantcontacten: + get: + operationId: klantcontact_list + summary: Alle KLANTCONTACTen opvragen. + description: |- + Alle KLANTCONTACTen opvragen. + + **DEPRECATED**: gebruik de contactmomenten API in plaats van deze endpoint. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Warning: + schema: + type: string + description: Geeft een endpoint-specifieke waarschuwing, zoals het uitfaseren + van functionaliteit. + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/KlantContact' + '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: + - klantcontacten + security: + - JWT-Claims: + - zaken.lezen + deprecated: true + post: + operationId: klantcontact_create + summary: Maak een KLANTCONTACT bij een ZAAK aan. + description: |- + Indien geen identificatie gegeven is, dan wordt deze automatisch + gegenereerd. + + **DEPRECATED**: gebruik de contactmomenten API in plaats van deze endpoint. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/KlantContact' + required: true + responses: + '201': + description: Created + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + Warning: + schema: + type: string + description: Geeft een endpoint-specifieke waarschuwing, zoals het uitfaseren + van functionaliteit. + content: + application/json: + schema: + $ref: '#/components/schemas/KlantContact' + '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: + - klantcontacten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + deprecated: true + parameters: [] + /klantcontacten/{uuid}: + get: + operationId: klantcontact_read + summary: Een specifiek KLANTCONTACT bij een ZAAK opvragen. + description: |- + Een specifiek KLANTCONTACT bij een ZAAK opvragen. + + **DEPRECATED**: gebruik de contactmomenten API in plaats van deze endpoint. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Warning: + schema: + type: string + description: Geeft een endpoint-specifieke waarschuwing, zoals het uitfaseren + van functionaliteit. + content: + application/json: + schema: + $ref: '#/components/schemas/KlantContact' + '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: + - klantcontacten + security: + - JWT-Claims: + - zaken.lezen + deprecated: true + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /resultaten: + get: + operationId: resultaat_list + summary: Alle RESULTAATen van ZAAKen opvragen. + description: Deze lijst kan gefilterd wordt met query-string parameters. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: resultaattype + in: query + description: URL-referentie naar het RESULTAATTYPE (in de Catalogi API). + required: false + schema: + type: string + format: uri + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/Resultaat' + '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: + - resultaten + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: resultaat_create + summary: Maak een RESULTAAT bij een ZAAK aan. + description: |- + **Er wordt gevalideerd op** + - geldigheid URL naar de ZAAK + - geldigheid URL naar het RESULTAATTYPE + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/Resultaat' + 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: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/Resultaat' + '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: + - resultaten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: [] + /resultaten/{uuid}: + get: + operationId: resultaat_read + summary: Een specifiek RESULTAAT opvragen. + description: Een specifiek RESULTAAT opvragen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Resultaat' + '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: + - resultaten + security: + - JWT-Claims: + - zaken.lezen + head: + operationId: resultaat_headers + summary: De headers voor een specifiek(e) RESULTAAT opvragen + description: Vraag de headers op die je bij een GET request zou krijgen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + tags: + - resultaten + security: + - JWT-Claims: + - zaken.lezen + put: + operationId: resultaat_update + summary: Werk een RESULTAAT in zijn geheel bij. + description: |- + **Er wordt gevalideerd op** + - geldigheid URL naar de ZAAK + - het RESULTAATTYPE mag niet gewijzigd worden + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/Resultaat' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Resultaat' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - resultaten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + patch: + operationId: resultaat_partial_update + summary: Werk een RESULTAAT deels bij. + description: |- + **Er wordt gevalideerd op** + - geldigheid URL naar de ZAAK + - het RESULTAATTYPE mag niet gewijzigd worden + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/Resultaat' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Resultaat' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - resultaten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + delete: + operationId: resultaat_delete + summary: Verwijder een RESULTAAT van een ZAAK. + description: Verwijder een RESULTAAT van een ZAAK. + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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: + - resultaten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /rollen: + get: + operationId: rol_list + summary: Alle ROLlen bij ZAAKen opvragen. + description: Deze lijst kan gefilterd wordt met query-string parameters. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: betrokkene + in: query + description: URL-referentie naar een betrokkene gerelateerd aan de ZAAK. + required: false + schema: + type: string + format: uri + - name: betrokkeneType + in: query + description: Type van de `betrokkene`. + required: false + schema: + type: string + enum: + - natuurlijk_persoon + - niet_natuurlijk_persoon + - vestiging + - organisatorische_eenheid + - medewerker + - name: betrokkeneIdentificatie__natuurlijkPersoon__inpBsn + in: query + description: Het burgerservicenummer, bedoeld in artikel 1.1 van de Wet + algemene bepalingen burgerservicenummer. + required: false + schema: + type: string + - name: betrokkeneIdentificatie__natuurlijkPersoon__anpIdentificatie + in: query + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NATUURLIJK PERSOON + required: false + schema: + type: string + - name: betrokkeneIdentificatie__natuurlijkPersoon__inpA_nummer + in: query + description: Het administratienummer van de persoon, bedoeld in de Wet BRP + required: false + schema: + type: string + - name: betrokkeneIdentificatie__nietNatuurlijkPersoon__innNnpId + in: query + description: Het door een kamer toegekend uniek nummer voor de INGESCHREVEN + NIET-NATUURLIJK PERSOON + required: false + schema: + type: string + - name: betrokkeneIdentificatie__nietNatuurlijkPersoon__annIdentificatie + in: query + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NIET-NATUURLIJK PERSOON + required: false + schema: + type: string + - name: betrokkeneIdentificatie__vestiging__vestigingsNummer + in: query + description: Een korte unieke aanduiding van de Vestiging. + required: false + schema: + type: string + - name: betrokkeneIdentificatie__organisatorischeEenheid__identificatie + in: query + description: Een korte identificatie van de organisatorische eenheid. + required: false + schema: + type: string + - name: betrokkeneIdentificatie__medewerker__identificatie + in: query + description: Een korte unieke aanduiding van de MEDEWERKER. + required: false + schema: + type: string + - name: roltype + in: query + description: URL-referentie naar een roltype binnen het ZAAKTYPE van de + ZAAK. + required: false + schema: + type: string + format: uri + - name: omschrijving + in: query + description: Omschrijving van de aard van de ROL, afgeleid uit het ROLTYPE. + required: false + schema: + type: string + - name: omschrijvingGeneriek + in: query + description: Algemeen gehanteerde benaming van de aard van de ROL, afgeleid + uit het ROLTYPE. + required: false + schema: + type: string + enum: + - adviseur + - behandelaar + - belanghebbende + - beslisser + - initiator + - klantcontacter + - zaakcoordinator + - mede_initiator + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/Rol' + '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: + - rollen + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: rol_create + summary: Maak een ROL aan bij een ZAAK. + description: Maak een ROL aan bij een ZAAK. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Rol' + required: true + responses: + '201': + description: Created + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/Rol' + '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: + - rollen + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: [] + /rollen/{uuid}: + get: + operationId: rol_read + summary: Een specifieke ROL bij een ZAAK opvragen. + description: Een specifieke ROL bij een ZAAK opvragen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Rol' + '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: + - rollen + security: + - JWT-Claims: + - zaken.lezen + head: + operationId: rol_headers + summary: De headers voor een specifiek(e) ROL opvragen + description: Vraag de headers op die je bij een GET request zou krijgen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + tags: + - rollen + security: + - JWT-Claims: + - zaken.lezen + delete: + operationId: rol_delete + summary: Verwijder een ROL van een ZAAK. + description: Verwijder een ROL van een ZAAK. + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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: + - rollen + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /statussen: + get: + operationId: status_list + summary: Alle STATUSsen van ZAAKen opvragen. + description: Deze lijst kan gefilterd wordt met query-string parameters. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: statustype + in: query + description: URL-referentie naar het STATUSTYPE (in de Catalogi API). + required: false + schema: + type: string + format: uri + - name: indicatieLaatstGezetteStatus + in: query + description: Het gegeven is afleidbaar uit de historie van de attribuutsoort + Datum status gezet van van alle statussen bij de desbetreffende zaak. + required: false + schema: + type: string + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/Status' + '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: + - statussen + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: status_create + summary: Maak een STATUS aan voor een ZAAK. + description: |- + **Er wordt gevalideerd op** + - geldigheid URL naar de ZAAK + - geldigheid URL naar het STATUSTYPE + - indien het de eindstatus betreft, dan moet het attribuut + `indicatieGebruiksrecht` gezet zijn op alle informatieobjecten die aan + de zaak gerelateerd zijn + + **Opmerkingen** + - Indien het statustype de eindstatus is (volgens het ZTC), dan wordt de + zaak afgesloten door de einddatum te zetten. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + required: true + responses: + '201': + description: Created + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + '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: + - statussen + security: + - JWT-Claims: + - (zaken.aanmaken | zaken.statussen.toevoegen | zaken.heropenen) + parameters: [] + /statussen/{uuid}: + get: + operationId: status_read + summary: Een specifieke STATUS van een ZAAK opvragen. + description: Een specifieke STATUS van een ZAAK opvragen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + '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: + - statussen + security: + - JWT-Claims: + - zaken.lezen + head: + operationId: status_headers + summary: De headers voor een specifiek(e) STATUS opvragen + description: Vraag de headers op die je bij een GET request zou krijgen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + tags: + - statussen + security: + - JWT-Claims: + - zaken.lezen + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /zaakcontactmomenten: + get: + operationId: zaakcontactmoment_list + summary: Alle ZAAKCONTACTMOMENTen opvragen. + description: Alle ZAAKCONTACTMOMENTen opvragen. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: contactmoment + in: query + description: URL-referentie naar het CONTACTMOMENT (in de CMC API) + required: false + schema: + type: string + format: uri + responses: + '200': + description: OK + headers: + API-version: + schema: + 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/ZaakContactMoment' + '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: + - zaakcontactmomenten + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaakcontactmoment_create + summary: Maak een ZAAKCONTACTMOMENT aan. + description: |- + **Er wordt gevalideerd op** + - geldigheid URL naar de CONTACTMOMENT + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakContactMoment' + required: true + responses: + '201': + description: Created + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakContactMoment' + '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: + - zaakcontactmomenten + security: + - JWT-Claims: + - zaken.bijwerken + parameters: [] + /zaakcontactmomenten/{uuid}: + get: + operationId: zaakcontactmoment_read + summary: Een specifiek ZAAKCONTACTMOMENT opvragen. + description: Een specifiek ZAAKCONTACTMOMENT opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakContactMoment' + '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: + - zaakcontactmomenten + security: + - JWT-Claims: + - zaken.lezen + delete: + operationId: zaakcontactmoment_delete + description: Verwijder een ZAAKCONTACTMOMENT. + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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: + - zaakcontactmomenten + security: + - JWT-Claims: + - zaken.bijwerken + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /zaakinformatieobjecten: + get: + operationId: zaakinformatieobject_list + summary: Alle ZAAK-INFORMATIEOBJECT relaties opvragen. + description: Deze lijst kan gefilterd wordt met querystringparameters. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: informatieobject + in: query + description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten + API), waar ook de relatieinformatie opgevraagd kan worden. + required: false + schema: + type: string + format: uri + responses: + '200': + description: OK + headers: + API-version: + schema: + 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/ZaakInformatieObject' + '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: + - zaakinformatieobjecten + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaakinformatieobject_create + summary: Maak een ZAAK-INFORMATIEOBJECT relatie aan. + description: |- + Er worden twee types van + relaties met andere objecten gerealiseerd: + + **Er wordt gevalideerd op** + - geldigheid zaak URL + - geldigheid informatieobject URL + - de combinatie informatieobject en zaak moet uniek zijn + + **Opmerkingen** + - De registratiedatum wordt door het systeem op 'NU' gezet. De `aardRelatie` + wordt ook door het systeem gezet. + - Bij het aanmaken wordt ook in de Documenten API de gespiegelde relatie aangemaakt, + echter zonder de relatie-informatie. + + Registreer welk(e) INFORMATIEOBJECT(en) een ZAAK kent. + + **Er wordt gevalideerd op** + - geldigheid informatieobject URL + - uniek zijn van relatie ZAAK-INFORMATIEOBJECT + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/ZaakInformatieObject' + 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: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakInformatieObject' + '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: + - zaakinformatieobjecten + security: + - JWT-Claims: + - (zaken.aanmaken | zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: [] + /zaakinformatieobjecten/{uuid}: + get: + operationId: zaakinformatieobject_read + summary: Een specifieke ZAAK-INFORMATIEOBJECT relatie opvragen. + description: Een specifieke ZAAK-INFORMATIEOBJECT relatie opvragen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakInformatieObject' + '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: + - zaakinformatieobjecten + security: + - JWT-Claims: + - zaken.lezen + head: + operationId: zaakinformatieobject_headers + summary: De headers voor een specifiek(e) ZAAKINFORMATIEOBJECT opvragen + description: Vraag de headers op die je bij een GET request zou krijgen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + tags: + - zaakinformatieobjecten + security: + - JWT-Claims: + - zaken.lezen + put: + operationId: zaakinformatieobject_update + summary: Werk een ZAAK-INFORMATIEOBJECT relatie in zijn geheel bij. + description: |- + Je mag enkel de gegevens + van de relatie bewerken, en niet de relatie zelf aanpassen. + + **Er wordt gevalideerd op** + - informatieobject URL en zaak URL mogen niet veranderen + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/ZaakInformatieObject' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakInformatieObject' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaakinformatieobjecten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + patch: + operationId: zaakinformatieobject_partial_update + summary: Werk een ZAAK-INFORMATIEOBJECT relatie in deels bij. + description: |- + Je mag enkel de gegevens + van de relatie bewerken, en niet de relatie zelf aanpassen. + + **Er wordt gevalideerd op** + - informatieobject URL en zaak URL mogen niet veranderen + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/ZaakInformatieObject' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakInformatieObject' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaakinformatieobjecten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + delete: + operationId: zaakinformatieobject_delete + summary: Verwijder een ZAAK-INFORMATIEOBJECT relatie. + description: |- + De gespiegelde relatie in de Documenten API wordt door de Zaken API + verwijderd. Consumers kunnen dit niet handmatig doen. + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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: + - zaakinformatieobjecten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken | zaken.verwijderen) + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /zaakobjecten: + get: + operationId: zaakobject_list + summary: Alle ZAAKOBJECTen opvragen. + description: Deze lijst kan gefilterd wordt met query-string parameters. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: object + in: query + description: URL-referentie naar de resource die het OBJECT beschrijft. + required: false + schema: + type: string + format: uri + - name: objectType + in: query + description: Beschrijft het type OBJECT gerelateerd aan de ZAAK. Als er + geen passend type is, dan moet het type worden opgegeven onder `objectTypeOverige`. + required: false + schema: + type: string + enum: + - adres + - besluit + - buurt + - enkelvoudig_document + - gemeente + - gemeentelijke_openbare_ruimte + - huishouden + - inrichtingselement + - kadastrale_onroerende_zaak + - kunstwerkdeel + - maatschappelijke_activiteit + - medewerker + - natuurlijk_persoon + - niet_natuurlijk_persoon + - openbare_ruimte + - organisatorische_eenheid + - pand + - spoorbaandeel + - status + - terreindeel + - terrein_gebouwd_object + - vestiging + - waterdeel + - wegdeel + - wijk + - woonplaats + - woz_deelobject + - woz_object + - woz_waarde + - zakelijk_recht + - overige + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/ZaakObject' + '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: + - zaakobjecten + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaakobject_create + summary: Maak een ZAAKOBJECT aan. + description: |- + Maak een ZAAKOBJECT aan. + + **Er wordt gevalideerd op** + + - Indien de `object` URL opgegeven is, dan moet deze een geldige response + (HTTP 200) geven. + - Indien opgegeven, dan wordt `objectIdentificatie` gevalideerd tegen de + `objectType` discriminator. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/ZaakObject' + 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: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakObject' + '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: + - zaakobjecten + security: + - JWT-Claims: + - (zaken.aanmaken | zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: [] + /zaakobjecten/{uuid}: + get: + operationId: zaakobject_read + summary: Een specifiek ZAAKOBJECT opvragen. + description: Een specifiek ZAAKOBJECT opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakObject' + '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: + - zaakobjecten + security: + - JWT-Claims: + - zaken.lezen + put: + operationId: zaakobject_update + summary: Werk een ZAAKOBJECT in zijn geheel bij. + description: |- + **Er wordt gevalideerd op** + + - De attributen `zaak`, `object` en `objectType` mogen niet gewijzigd worden. + - Indien opgegeven, dan wordt `objectIdentificatie` gevalideerd tegen de + `objectType` discriminator. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/ZaakObject' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakObject' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaakobjecten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + patch: + operationId: zaakobject_partial_update + summary: Werk een ZAAKOBJECT deels bij. + description: |- + **Er wordt gevalideerd op** + + - De attributen `zaak`, `object` en `objectType` mogen niet gewijzigd worden. + - Indien opgegeven, dan wordt `objectIdentificatie` gevalideerd tegen de + `objectType` discriminator. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/ZaakObject' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakObject' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaakobjecten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + delete: + operationId: zaakobject_delete + summary: Verwijder een ZAAKOBJECT. + description: |- + Verbreek de relatie tussen een ZAAK en een OBJECT door de ZAAKOBJECT resource te + verwijderen. + 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' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaakobjecten + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken | zaken.verwijderen) + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /zaakverzoeken: + get: + operationId: zaakverzoek_list + summary: Alle ZAAK-VERZOEK opvragen. + description: Alle ZAAK-VERZOEK opvragen. + parameters: + - name: zaak + in: query + description: URL-referentie naar de ZAAK. + required: false + schema: + type: string + format: uri + - name: verzoek + in: query + description: URL-referentie naar het VERZOEK (in de Klantinteractie API) + required: false + schema: + type: string + format: uri + responses: + '200': + description: OK + headers: + API-version: + schema: + 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/ZaakVerzoek' + '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: + - zaakverzoeken + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaakverzoek_create + summary: Maak een ZAAK-VERZOEK aan. + description: |- + **Er wordt gevalideerd op** + - geldigheid URL naar de VERZOEK + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakVerzoek' + required: true + responses: + '201': + description: Created + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakVerzoek' + '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: + - zaakverzoeken + security: + - JWT-Claims: + - zaken.bijwerken + parameters: [] + /zaakverzoeken/{uuid}: + get: + operationId: zaakverzoek_read + summary: Een specifiek ZAAK-VERZOEK opvragen. + description: Een specifiek ZAAK-VERZOEK opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakVerzoek' + '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: + - zaakverzoeken + security: + - JWT-Claims: + - zaken.lezen + delete: + operationId: zaakverzoek_delete + description: Verwijder een ZAAK-VERZOEK. + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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: + - zaakverzoeken + security: + - JWT-Claims: + - zaken.bijwerken + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /zaken: + get: + operationId: zaak_list + summary: Alle ZAAKen opvragen. + description: |- + Deze lijst kan gefilterd wordt met query-string parameters. + + **Opmerking** + - er worden enkel zaken getoond van de zaaktypes waar u toe geautoriseerd + bent. + parameters: + - name: identificatie + in: query + description: De unieke identificatie van de ZAAK binnen de organisatie die + verantwoordelijk is voor de behandeling van de ZAAK. + required: false + schema: + type: string + - name: bronorganisatie + in: query + description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie + die de zaak heeft gecreeerd. Dit moet een geldig RSIN zijn van 9 nummers + en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef + required: false + schema: + type: string + - name: bronorganisatie__in + in: query + description: Multiple values may be separated by commas. + required: false + schema: + type: array + items: + type: string + style: form + explode: false + - name: zaaktype + in: query + description: URL-referentie naar het ZAAKTYPE (in de Catalogi API). + required: false + schema: + type: string + format: uri + - name: archiefnominatie + in: query + description: Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + required: false + schema: + type: string + enum: + - blijvend_bewaren + - vernietigen + - name: archiefnominatie__in + in: query + description: Multiple values may be separated by commas. + required: false + schema: + type: array + items: + type: string + style: form + explode: false + - name: archiefactiedatum + in: query + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + required: false + schema: + type: string + - name: archiefactiedatum__lt + in: query + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + required: false + schema: + type: string + - name: archiefactiedatum__gt + in: query + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + required: false + schema: + type: string + - name: archiefactiedatum__isnull + in: query + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + required: false + schema: + type: string + - name: archiefstatus + in: query + description: Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + required: false + schema: + type: string + enum: + - nog_te_archiveren + - gearchiveerd + - gearchiveerd_procestermijn_onbekend + - overgedragen + - name: archiefstatus__in + in: query + description: Multiple values may be separated by commas. + required: false + schema: + type: array + items: + type: string + style: form + explode: false + - name: startdatum + in: query + description: De datum waarop met de uitvoering van de zaak is gestart + required: false + schema: + type: string + - name: startdatum__gt + in: query + description: De datum waarop met de uitvoering van de zaak is gestart + required: false + schema: + type: string + - name: startdatum__gte + in: query + description: De datum waarop met de uitvoering van de zaak is gestart + required: false + schema: + type: string + - name: startdatum__lt + in: query + description: De datum waarop met de uitvoering van de zaak is gestart + required: false + schema: + type: string + - name: startdatum__lte + in: query + description: De datum waarop met de uitvoering van de zaak is gestart + required: false + schema: + type: string + - name: registratiedatum + in: query + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + required: false + schema: + type: string + - name: registratiedatum__gt + in: query + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + required: false + schema: + type: string + - name: registratiedatum__lt + in: query + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + required: false + schema: + type: string + - name: einddatum + in: query + description: De datum waarop de uitvoering van de zaak afgerond is. + required: false + schema: + type: string + - name: einddatum__gt + in: query + description: De datum waarop de uitvoering van de zaak afgerond is. + required: false + schema: + type: string + - name: einddatum__lt + in: query + description: De datum waarop de uitvoering van de zaak afgerond is. + required: false + schema: + type: string + - name: einddatum__isnull + in: query + description: De datum waarop de uitvoering van de zaak afgerond is. + required: false + schema: + type: string + - name: einddatumGepland + in: query + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + required: false + schema: + type: string + - name: einddatumGepland__gt + in: query + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + required: false + schema: + type: string + - name: einddatumGepland__lt + in: query + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + required: false + schema: + type: string + - name: uiterlijkeEinddatumAfdoening + in: query + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + required: false + schema: + type: string + - name: uiterlijkeEinddatumAfdoening__gt + in: query + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + required: false + schema: + type: string + - name: uiterlijkeEinddatumAfdoening__lt + in: query + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + required: false + schema: + type: string + - name: rol__betrokkeneType + in: query + description: Type van de `betrokkene`. + required: false + schema: + type: string + enum: + - natuurlijk_persoon + - niet_natuurlijk_persoon + - vestiging + - organisatorische_eenheid + - medewerker + - name: rol__betrokkene + in: query + description: URL-referentie naar een betrokkene gerelateerd aan de ZAAK. + required: false + schema: + type: string + format: uri + - name: rol__omschrijvingGeneriek + in: query + description: Algemeen gehanteerde benaming van de aard van de ROL, afgeleid + uit het ROLTYPE. + required: false + schema: + type: string + enum: + - adviseur + - behandelaar + - belanghebbende + - beslisser + - initiator + - klantcontacter + - zaakcoordinator + - mede_initiator + - name: maximaleVertrouwelijkheidaanduiding + in: query + description: Zaken met een vertrouwelijkheidaanduiding die beperkter is + dan de aangegeven aanduiding worden uit de resultaten gefiltered. + required: false + schema: + type: string + enum: + - openbaar + - beperkt_openbaar + - intern + - zaakvertrouwelijk + - vertrouwelijk + - confidentieel + - geheim + - zeer_geheim + - name: rol__betrokkeneIdentificatie__natuurlijkPersoon__inpBsn + in: query + description: Het burgerservicenummer, bedoeld in artikel 1.1 van de Wet + algemene bepalingen burgerservicenummer. + required: false + schema: + type: string + maxLength: 9 + - name: rol__betrokkeneIdentificatie__natuurlijkPersoon__anpIdentificatie + in: query + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NATUURLIJK PERSOON + required: false + schema: + type: string + maxLength: 17 + - name: rol__betrokkeneIdentificatie__natuurlijkPersoon__inpA_nummer + in: query + description: Het administratienummer van de persoon, bedoeld in de Wet BRP + required: false + schema: + type: string + maxLength: 10 + - name: rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__innNnpId + in: query + description: Het door een kamer toegekend uniek nummer voor de INGESCHREVEN + NIET-NATUURLIJK PERSOON + required: false + schema: + type: string + - name: rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__annIdentificatie + in: query + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NIET-NATUURLIJK PERSOON + required: false + schema: + type: string + maxLength: 17 + - name: rol__betrokkeneIdentificatie__vestiging__vestigingsNummer + in: query + description: Een korte unieke aanduiding van de Vestiging. + required: false + schema: + type: string + maxLength: 24 + - name: rol__betrokkeneIdentificatie__medewerker__identificatie + in: query + description: Een korte unieke aanduiding van de MEDEWERKER. + required: false + schema: + type: string + maxLength: 24 + - name: rol__betrokkeneIdentificatie__organisatorischeEenheid__identificatie + in: query + description: Een korte identificatie van de organisatorische eenheid. + required: false + schema: + type: string + - name: ordering + in: query + description: Het veld waarop de resultaten geordend worden. + required: false + schema: + type: array + items: + type: string + enum: + - startdatum + - -startdatum + - einddatum + - -einddatum + - publicatiedatum + - -publicatiedatum + - archiefactiedatum + - -archiefactiedatum + - registratiedatum + - -registratiedatum + - identificatie + - -identificatie + style: form + explode: false + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + responses: + '200': + description: OK + headers: + Content-Crs: + description: Het 'Coordinate Reference System' (CRS) van de antwoorddata. + Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 is hetzelfde + als WGS84). + schema: + type: string + enum: + - EPSG:4326 + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/Zaak' + '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' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaak_create + summary: Maak een ZAAK aan. + description: |- + Indien geen identificatie gegeven is, dan wordt deze automatisch + gegenereerd. De identificatie moet uniek zijn binnen de bronorganisatie. + + **Er wordt gevalideerd op**: + - geldigheid `zaaktype` URL - de resource moet opgevraagd kunnen worden uit de + Catalogi API en de vorm van een ZAAKTYPE hebben. + - `zaaktype` is geen concept (`zaaktype.concept` = False) + - `laatsteBetaaldatum` mag niet in de toekomst liggen. + - `laatsteBetaaldatum` mag niet gezet worden als de betalingsindicatie + "nvt" is. + - `archiefnominatie` moet een waarde hebben indien `archiefstatus` niet de + waarde "nog_te_archiveren" heeft. + - `archiefactiedatum` moet een waarde hebben indien `archiefstatus` niet de + waarde "nog_te_archiveren" heeft. + - `archiefstatus` kan alleen een waarde anders dan "nog_te_archiveren" + hebben indien van alle gerelateeerde INFORMATIEOBJECTen het attribuut + `status` de waarde "gearchiveerd" heeft. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/Zaak' + 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: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/Zaak' + '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' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - zaken.aanmaken + parameters: [] + /zaken/_zoek: + post: + operationId: zaak__zoek + summary: Voer een (geo)-zoekopdracht uit op ZAAKen. + description: |- + Zoeken/filteren gaat normaal via de `list` operatie, deze is echter + niet geschikt voor geo-zoekopdrachten. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: page + in: query + description: Een pagina binnen de gepagineerde set resultaten. + required: false + schema: + type: integer + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakZoek' + required: true + responses: + '200': + description: OK + headers: + Content-Crs: + description: Het 'Coordinate Reference System' (CRS) van de antwoorddata. + Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 is hetzelfde + als WGS84). + schema: + type: string + enum: + - EPSG:4326 + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + nullable: true + previous: + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/Zaak' + '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' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - zaken.lezen + parameters: [] + /zaken/{uuid}: + get: + operationId: zaak_read + summary: Een specifieke ZAAK opvragen. + description: Een specifieke ZAAK opvragen. + parameters: + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + Content-Crs: + description: Het 'Coordinate Reference System' (CRS) van de antwoorddata. + Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 is hetzelfde + als WGS84). + schema: + type: string + enum: + - EPSG:4326 + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Zaak' + '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' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - zaken.lezen + head: + operationId: zaak_headers + summary: De headers voor een specifiek(e) ZAAK opvragen + description: Vraag de headers op die je bij een GET request zou krijgen. + parameters: + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + Content-Crs: + description: Het 'Coordinate Reference System' (CRS) van de antwoorddata. + Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 is hetzelfde + als WGS84). + schema: + type: string + enum: + - EPSG:4326 + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + tags: + - zaken + security: + - JWT-Claims: + - zaken.lezen + put: + operationId: zaak_update + summary: Werk een ZAAK in zijn geheel bij. + description: |- + **Er wordt gevalideerd op** + - `zaaktype` mag niet gewijzigd worden. + - `identificatie` mag niet gewijzigd worden. + - `laatsteBetaaldatum` mag niet in de toekomst liggen. + - `laatsteBetaaldatum` mag niet gezet worden als de betalingsindicatie + "nvt" is. + - `archiefnominatie` moet een waarde hebben indien `archiefstatus` niet de + waarde "nog_te_archiveren" heeft. + - `archiefactiedatum` moet een waarde hebben indien `archiefstatus` niet de + waarde "nog_te_archiveren" heeft. + - `archiefstatus` kan alleen een waarde anders dan "nog_te_archiveren" + hebben indien van alle gerelateeerde INFORMATIEOBJECTen het attribuut + `status` de waarde "gearchiveerd" heeft. + + **Opmerkingen** + - er worden enkel zaken getoond van de zaaktypes waar u toe geautoriseerd + bent. + - zaaktype zal in de toekomst niet-wijzigbaar gemaakt worden. + - indien een zaak heropend moet worden, doe dit dan door een nieuwe status + toe te voegen die NIET de eindstatus is. + Zie de `Status` resource. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/Zaak' + responses: + '200': + description: OK + headers: + Content-Crs: + description: Het 'Coordinate Reference System' (CRS) van de antwoorddata. + Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 is hetzelfde + als WGS84). + schema: + type: string + enum: + - EPSG:4326 + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Zaak' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + patch: + operationId: zaak_partial_update + summary: Werk een ZAAK deels bij. + description: |- + **Er wordt gevalideerd op** + - `zaaktype` mag niet gewijzigd worden. + - `identificatie` mag niet gewijzigd worden. + - `laatsteBetaaldatum` mag niet in de toekomst liggen. + - `laatsteBetaaldatum` mag niet gezet worden als de betalingsindicatie + "nvt" is. + - `archiefnominatie` moet een waarde hebben indien `archiefstatus` niet de + waarde "nog_te_archiveren" heeft. + - `archiefactiedatum` moet een waarde hebben indien `archiefstatus` niet de + waarde "nog_te_archiveren" heeft. + - `archiefstatus` kan alleen een waarde anders dan "nog_te_archiveren" + hebben indien van alle gerelateeerde INFORMATIEOBJECTen het attribuut + `status` de waarde "gearchiveerd" heeft. + + **Opmerkingen** + - er worden enkel zaken getoond van de zaaktypes waar u toe geautoriseerd + bent. + - zaaktype zal in de toekomst niet-wijzigbaar gemaakt worden. + - indien een zaak heropend moet worden, doe dit dan door een nieuwe status + toe te voegen die NIET de eindstatus is. Zie de `Status` resource. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: Accept-Crs + in: header + description: Het gewenste 'Coordinate Reference System' (CRS) van de geometrie + in het antwoord (response body). Volgens de GeoJSON spec is WGS84 de default + (EPSG:4326 is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: Content-Crs + in: header + description: Het 'Coordinate Reference System' (CRS) van de geometrie in + de vraag (request body). Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 + is hetzelfde als WGS84). + required: true + schema: + type: string + enum: + - EPSG:4326 + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/Zaak' + responses: + '200': + description: OK + headers: + Content-Crs: + description: Het 'Coordinate Reference System' (CRS) van de antwoorddata. + Volgens de GeoJSON spec is WGS84 de default (EPSG:4326 is hetzelfde + als WGS84). + schema: + type: string + enum: + - EPSG:4326 + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/Zaak' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + delete: + operationId: zaak_delete + summary: Verwijder een ZAAK. + description: |- + **De gerelateerde resources zijn hierbij** + - `zaak` - de deelzaken van de verwijderde hoofzaak + - `status` - alle statussen van de verwijderde zaak + - `resultaat` - het resultaat van de verwijderde zaak + - `rol` - alle rollen bij de zaak + - `zaakobject` - alle zaakobjecten bij de zaak + - `zaakeigenschap` - alle eigenschappen van de zaak + - `zaakkenmerk` - alle kenmerken van de zaak + - `zaakinformatieobject` - dit moet door-cascaden naar de Documenten API, + zie ook: https://github.com/VNG-Realisatie/gemma-zaken/issues/791 (TODO) + - `klantcontact` - alle klantcontacten bij een zaak + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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' + '412': + $ref: '#/components/responses/412' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - zaken.verwijderen + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + /zaken/{zaak_uuid}/audittrail: + get: + operationId: audittrail_list + summary: Alle audit trail regels behorend bij de ZAAK. + description: Alle audit trail regels behorend bij de ZAAK. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditTrail' + '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: + - zaken + security: + - JWT-Claims: + - audittrails.lezen + parameters: + - name: zaak_uuid + in: path + required: true + description: Unieke resource identifier (UUID4) + schema: + type: string + format: uuid + /zaken/{zaak_uuid}/audittrail/{uuid}: + get: + operationId: audittrail_read + summary: Een specifieke audit trail regel opvragen. + description: Een specifieke audit trail regel opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditTrail' + '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: + - zaken + security: + - JWT-Claims: + - audittrails.lezen + parameters: + - name: uuid + in: path + description: Unieke identificatie van de audit regel. + required: true + schema: + type: string + format: uuid + - name: zaak_uuid + in: path + required: true + description: Unieke resource identifier (UUID4) + schema: + type: string + format: uuid + /zaken/{zaak_uuid}/besluiten: + get: + operationId: zaakbesluit_list + summary: Alle ZAAKBESLUITen opvragen. + description: Alle ZAAKBESLUITen opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + 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/ZaakBesluit' + '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: + - zaken + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaakbesluit_create + summary: Maak een ZAAKBESLUIT aan. + description: |- + **LET OP: Dit endpoint hoor je als consumer niet zelf aan te spreken.** + + De Besluiten API gebruikt dit endpoint om relaties te synchroniseren, + daarom is dit endpoint in de Zaken API geimplementeerd. + + **Er wordt gevalideerd op** + - geldigheid URL naar de ZAAK + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakBesluit' + required: true + responses: + '201': + description: Created + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + Location: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakBesluit' + '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: + - zaken + security: + - JWT-Claims: + - zaken.bijwerken + parameters: + - name: zaak_uuid + in: path + required: true + description: Unieke resource identifier (UUID4) + schema: + type: string + format: uuid + /zaken/{zaak_uuid}/besluiten/{uuid}: + get: + operationId: zaakbesluit_read + summary: Een specifiek ZAAKBESLUIT opvragen. + description: Een specifiek ZAAKBESLUIT opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakBesluit' + '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: + - zaken + security: + - JWT-Claims: + - zaken.lezen + delete: + operationId: zaakbesluit_delete + summary: Verwijder een ZAAKBESLUIT. + description: |- + **LET OP: Dit endpoint hoor je als consumer niet zelf aan te spreken.** + + De Besluiten API gebruikt dit endpoint om relaties te synchroniseren, + daarom is dit endpoint in de Zaken API geimplementeerd. + parameters: + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + responses: + '204': + description: No content + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + '401': + $ref: '#/components/responses/401' + '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: + - zaken + security: + - JWT-Claims: + - zaken.bijwerken + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + - name: zaak_uuid + in: path + required: true + description: Unieke resource identifier (UUID4) + schema: + type: string + format: uuid + /zaken/{zaak_uuid}/zaakeigenschappen: + get: + operationId: zaakeigenschap_list + summary: Alle ZAAKEIGENSCHAPpen opvragen. + description: Alle ZAAKEIGENSCHAPpen opvragen. + responses: + '200': + description: OK + headers: + API-version: + schema: + 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/ZaakEigenschap' + '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: + - zaken + security: + - JWT-Claims: + - zaken.lezen + post: + operationId: zaakeigenschap_create + summary: Maak een ZAAKEIGENSCHAP aan. + description: Maak een ZAAKEIGENSCHAP aan. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + - name: X-NLX-Logrecord-ID + in: header + description: Identifier of the request, traceable throughout the network + required: false + schema: + type: string + - name: X-Audit-Toelichting + in: header + description: Toelichting waarom een bepaald verzoek wordt gedaan + required: false + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/ZaakEigenschap' + 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: + schema: + type: string + format: uri + description: URL waar de resource leeft. + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakEigenschap' + '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: + - zaken + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: + - name: zaak_uuid + in: path + required: true + description: Unieke resource identifier (UUID4) + schema: + type: string + format: uuid + /zaken/{zaak_uuid}/zaakeigenschappen/{uuid}: + get: + operationId: zaakeigenschap_read + summary: Een specifieke ZAAKEIGENSCHAP opvragen. + description: Een specifieke ZAAKEIGENSCHAP opvragen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakEigenschap' + '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: + - zaken + security: + - JWT-Claims: + - zaken.lezen + head: + operationId: zaakeigenschap_headers + summary: De headers voor een specifiek(e) ZAAKEIGENSCHAP opvragen + description: Vraag de headers op die je bij een GET request zou krijgen. + parameters: + - name: If-None-Match + in: header + description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\ + \xE9n of meerdere ETag-waardes bevatten van resources die de consumer\ + \ gecached heeft. Indien de waarde van de ETag van de huidige resource\ + \ voorkomt in deze set, dan antwoordt de provider met een lege HTTP 304\ + \ request. Zie [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\ + \ voor meer informatie." + required: false + examples: + oneValue: + summary: "E\xE9n ETag-waarde" + value: '"79054025255fb1a26e4bc422aef54eb4"' + multipleValues: + summary: Meerdere ETag-waardes + value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"' + schema: + type: string + responses: + '200': + description: OK + headers: + ETag: + description: De ETag berekend op de response body JSON. Indien twee + resources exact dezelfde ETag hebben, dan zijn deze resources identiek + aan elkaar. Je kan de ETag gebruiken om caching te implementeren. + schema: + type: string + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + tags: + - zaken + security: + - JWT-Claims: + - zaken.lezen + put: + operationId: zaakeigenschap_update + summary: Werk een ZAAKEIGENSCHAP in zijn geheel bij. + description: |- + **Er wordt gevalideerd op** + + - Alleen de WAARDE mag gewijzigd worden + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/ZaakEigenschap' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakEigenschap' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + patch: + operationId: zaakeigenschap_partial_update + summary: Werk een ZAAKEIGENSCHAP deels bij. + description: |- + **Er wordt gevalideerd op** + + - Alleen de WAARDE mag gewijzigd worden + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/ZaakEigenschap' + responses: + '200': + description: OK + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van + een specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakEigenschap' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '409': + $ref: '#/components/responses/409' + '410': + $ref: '#/components/responses/410' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + delete: + operationId: zaakeigenschap_delete + description: Verwijder een ZAAKEIGENSCHAP. + 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' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + tags: + - zaken + security: + - JWT-Claims: + - (zaken.bijwerken | zaken.geforceerd-bijwerken) + parameters: + - name: uuid + in: path + description: Unieke resource identifier (UUID4) + required: true + schema: + type: string + format: uuid + - name: zaak_uuid + in: path + required: true + description: Unieke resource identifier (UUID4) + schema: + type: string + format: uuid +tags: + - name: klantcontacten + description: '' + - name: resultaten + description: '' + - name: rollen + description: '' + - name: statussen + description: '' + - name: zaakcontactmomenten + description: '' + - name: zaakinformatieobjecten + description: '' + - name: zaakobjecten + description: '' + - name: zaakverzoeken + description: '' + - name: zaken + description: |- + Een zaak mag (in principe) niet meer gewijzigd worden als de + `archiefstatus` een andere status heeft dan "nog_te_archiveren". Voor + praktische redenen is er geen harde validatie regel aan de provider kant. +servers: + - url: https://test.openzaak.nl/zaken/api/v1 +components: + responses: + '400': + description: Bad request + headers: + API-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/ValidatieFout' + '401': + description: Unauthorized + headers: + API-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' + '403': + description: Forbidden + headers: + API-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' + '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: + 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' + '409': + description: Conflict + headers: + API-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' + '410': + description: Gone + headers: + API-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' + '412': + description: Precondition failed + headers: + API-version: + schema: + type: string + description: 'Geeft een specifieke API-versie aan in de context van een + specifieke aanroep. Voorbeeld: 1.2.1.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '415': + description: Unsupported media type + headers: + API-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' + '429': + description: Too many requests + headers: + API-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' + '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: + Resultaat: + content: + application/json: + schema: + $ref: '#/components/schemas/Resultaat' + required: true + ZaakInformatieObject: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakInformatieObject' + required: true + ZaakObject: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakObject' + required: true + Zaak: + content: + application/json: + schema: + $ref: '#/components/schemas/Zaak' + required: true + ZaakEigenschap: + content: + application/json: + schema: + $ref: '#/components/schemas/ZaakEigenschap' + required: true + securitySchemes: + JWT-Claims: + type: http + scheme: bearer + bearerFormat: JWT + schemas: + KlantContact: + required: + - zaak + - datumtijd + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + identificatie: + title: Identificatie + description: De unieke aanduiding van een KLANTCONTACT + type: string + maxLength: 14 + minLength: 1 + datumtijd: + title: Datumtijd + description: De datum en het tijdstip waarop het KLANTCONTACT begint + type: string + format: date-time + kanaal: + title: Kanaal + description: Het communicatiekanaal waarlangs het KLANTCONTACT gevoerd wordt + type: string + maxLength: 20 + onderwerp: + title: Onderwerp + description: Het onderwerp waarover contact is geweest met de klant. + type: string + maxLength: 200 + toelichting: + title: Toelichting + description: Een toelichting die inhoudelijk het contact met de klant beschrijft. + type: string + maxLength: 1000 + 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: '#/components/schemas/FieldValidationError' + Resultaat: + required: + - zaak + - resultaattype + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + resultaattype: + title: Resultaattype + description: URL-referentie naar het RESULTAATTYPE (in de Catalogi API). + type: string + format: uri + maxLength: 1000 + minLength: 1 + toelichting: + title: Toelichting + description: Een toelichting op wat het resultaat van de zaak inhoudt. + type: string + maxLength: 1000 + ContactPersoonRol: + description: De gegevens van de persoon die anderen desgevraagd in contact brengt + met medewerkers van de BETROKKENE, een NIET-NATUURLIJK PERSOON of VESTIGING + zijnde, of met BETROKKENE zelf, een NATUURLIJK PERSOON zijnde , vanuit het + belang van BETROKKENE in haar ROL bij een ZAAK. + required: + - naam + type: object + properties: + emailadres: + title: Email + description: Elektronich postadres waaronder de contactpersoon in de regel + bereikbaar is. + type: string + format: email + maxLength: 254 + functie: + title: Functie + description: 'De aanduiding van de taken, rechten en plichten die de contactpersoon + heeft binnen de organisatie van BETROKKENE. ' + type: string + maxLength: 50 + telefoonnummer: + title: Telefoonnummer + description: Telefoonnummer waaronder de contactpersoon in de regel bereikbaar + is. + type: string + maxLength: 20 + naam: + title: Naam + description: De opgemaakte naam van de contactpersoon namens de BETROKKENE. + type: string + maxLength: 200 + minLength: 1 + nullable: true + Rol: + required: + - zaak + - betrokkeneType + - roltype + - roltoelichting + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + betrokkene: + title: Betrokkene + description: URL-referentie naar een betrokkene gerelateerd aan de ZAAK. + type: string + format: uri + maxLength: 1000 + betrokkeneType: + title: Betrokkene type + description: |- + Type van de `betrokkene`. + + Uitleg bij mogelijke waarden: + + * `natuurlijk_persoon` - Natuurlijk persoon + * `niet_natuurlijk_persoon` - Niet-natuurlijk persoon + * `vestiging` - Vestiging + * `organisatorische_eenheid` - Organisatorische eenheid + * `medewerker` - Medewerker + type: string + enum: + - natuurlijk_persoon + - niet_natuurlijk_persoon + - vestiging + - organisatorische_eenheid + - medewerker + afwijkendeNaamBetrokkene: + title: Afwijkende naam betrokkene + description: De naam van de betrokkene waaronder deze in relatie tot de + zaak aangesproken wil worden. + type: string + maxLength: 625 + roltype: + title: Roltype + description: URL-referentie naar een roltype binnen het ZAAKTYPE van de + ZAAK. + type: string + format: uri + maxLength: 1000 + minLength: 1 + omschrijving: + title: Omschrijving + description: Omschrijving van de aard van de ROL, afgeleid uit het ROLTYPE. + type: string + readOnly: true + minLength: 1 + omschrijvingGeneriek: + title: Omschrijving generiek + description: |- + Algemeen gehanteerde benaming van de aard van de ROL, afgeleid uit het ROLTYPE. + + Uitleg bij mogelijke waarden: + + * `adviseur` - (Adviseur) Kennis in dienst stellen van de behandeling van (een deel van) een zaak. + * `behandelaar` - (Behandelaar) De vakinhoudelijke behandeling doen van (een deel van) een zaak. + * `belanghebbende` - (Belanghebbende) Vanuit eigen en objectief belang rechtstreeks betrokken zijn bij de behandeling en/of de uitkomst van een zaak. + * `beslisser` - (Beslisser) Nemen van besluiten die voor de uitkomst van een zaak noodzakelijk zijn. + * `initiator` - (Initiator) Aanleiding geven tot de start van een zaak .. + * `klantcontacter` - (Klantcontacter) Het eerste aanspreekpunt zijn voor vragen van burgers en bedrijven .. + * `zaakcoordinator` - (Zaakcoördinator) Er voor zorg dragen dat de behandeling van de zaak in samenhang uitgevoerd wordt conform de daarover gemaakte afspraken. + * `mede_initiator` - Mede-initiator + type: string + readOnly: true + minLength: 1 + roltoelichting: + title: Roltoelichting + type: string + maxLength: 1000 + minLength: 1 + registratiedatum: + title: Registratiedatum + description: De datum waarop dit object is geregistreerd. + type: string + format: date-time + readOnly: true + indicatieMachtiging: + title: Indicatie machtiging + description: |- + Indicatie machtiging + + Uitleg bij mogelijke waarden: + + * `gemachtigde` - De betrokkene in de rol bij de zaak is door een andere betrokkene bij dezelfde zaak gemachtigd om namens hem of haar te handelen + * `machtiginggever` - De betrokkene in de rol bij de zaak heeft een andere betrokkene bij dezelfde zaak gemachtigd om namens hem of haar te handelen + type: string + enum: + - gemachtigde + - machtiginggever + contactpersoonRol: + $ref: '#/components/schemas/ContactPersoonRol' + discriminator: + propertyName: betrokkeneType + VerblijfsAdres: + required: + - aoaIdentificatie + - wplWoonplaatsNaam + - gorOpenbareRuimteNaam + - aoaHuisnummer + type: object + properties: + aoaIdentificatie: + title: Aoa identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + wplWoonplaatsNaam: + title: Wpl woonplaats naam + type: string + maxLength: 80 + minLength: 1 + gorOpenbareRuimteNaam: + title: Gor openbare ruimte naam + description: Een door het bevoegde gemeentelijke orgaan aan een OPENBARE + RUIMTE toegekende benaming + type: string + maxLength: 80 + minLength: 1 + aoaPostcode: + title: Aoa postcode + type: string + maxLength: 7 + aoaHuisnummer: + title: Aoa huisnummer + type: integer + maximum: 99999 + minimum: 0 + aoaHuisletter: + title: Aoa huisletter + type: string + maxLength: 1 + aoaHuisnummertoevoeging: + title: Aoa huisnummertoevoeging + type: string + maxLength: 4 + inpLocatiebeschrijving: + title: Inp locatiebeschrijving + type: string + maxLength: 1000 + nullable: true + SubVerblijfBuitenland: + required: + - lndLandcode + - lndLandnaam + type: object + properties: + lndLandcode: + title: Lnd landcode + description: De code, behorende bij de landnaam, zoals opgenomen in de Land/Gebied-tabel + van de BRP. + type: string + maxLength: 4 + minLength: 1 + lndLandnaam: + title: Lnd landnaam + description: De naam van het land, zoals opgenomen in de Land/Gebied-tabel + van de BRP. + type: string + maxLength: 40 + minLength: 1 + subAdresBuitenland_1: + title: Sub adres buitenland 1 + type: string + maxLength: 35 + subAdresBuitenland_2: + title: Sub adres buitenland 2 + type: string + maxLength: 35 + subAdresBuitenland_3: + title: Sub adres buitenland 3 + type: string + maxLength: 35 + nullable: true + RolNatuurlijkPersoon: + type: object + properties: + inpBsn: + title: Inp bsn + description: Het burgerservicenummer, bedoeld in artikel 1.1 van de Wet + algemene bepalingen burgerservicenummer. + type: string + maxLength: 9 + anpIdentificatie: + title: Anp identificatie + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NATUURLIJK PERSOON + type: string + maxLength: 17 + inpA_nummer: + title: Inp a nummer + description: Het administratienummer van de persoon, bedoeld in de Wet BRP + type: string + pattern: ^[1-9][0-9]{9}$ + maxLength: 10 + geslachtsnaam: + title: Geslachtsnaam + description: De stam van de geslachtsnaam. + type: string + maxLength: 200 + voorvoegselGeslachtsnaam: + title: Voorvoegsel geslachtsnaam + type: string + maxLength: 80 + voorletters: + title: Voorletters + description: De verzameling letters die gevormd wordt door de eerste letter + van alle in volgorde voorkomende voornamen. + type: string + maxLength: 20 + voornamen: + title: Voornamen + description: Voornamen bij de naam die de persoon wenst te voeren. + type: string + maxLength: 200 + geslachtsaanduiding: + title: Geslachtsaanduiding + description: |- + Een aanduiding die aangeeft of de persoon een man of een vrouw is, of dat het geslacht nog onbekend is. + + Uitleg bij mogelijke waarden: + + * `m` - Man + * `v` - Vrouw + * `o` - Onbekend + type: string + enum: + - m + - v + - o + geboortedatum: + title: Geboortedatum + type: string + maxLength: 18 + verblijfsadres: + $ref: '#/components/schemas/VerblijfsAdres' + subVerblijfBuitenland: + $ref: '#/components/schemas/SubVerblijfBuitenland' + betrokkene_identificatie_RolNatuurlijkPersoon: + type: object + properties: + betrokkeneIdentificatie: + $ref: '#/components/schemas/RolNatuurlijkPersoon' + natuurlijk_persoon: + type: object + allOf: + - $ref: '#/components/schemas/Rol' + - $ref: '#/components/schemas/betrokkene_identificatie_RolNatuurlijkPersoon' + RolNietNatuurlijkPersoon: + type: object + properties: + innNnpId: + title: Inn nnp id + description: Het door een kamer toegekend uniek nummer voor de INGESCHREVEN + NIET-NATUURLIJK PERSOON + type: string + maxLength: 9 + annIdentificatie: + title: Ann identificatie + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NIET-NATUURLIJK PERSOON + type: string + maxLength: 17 + statutaireNaam: + title: Statutaire naam + description: Naam van de niet-natuurlijke persoon zoals deze is vastgelegd + in de statuten (rechtspersoon) of in de vennootschapsovereenkomst is overeengekomen + (Vennootschap onder firma of Commanditaire vennootschap). + type: string + maxLength: 500 + innRechtsvorm: + title: Inn rechtsvorm + description: De juridische vorm van de NIET-NATUURLIJK PERSOON. + type: string + enum: + - besloten_vennootschap + - cooperatie_europees_economische_samenwerking + - europese_cooperatieve_venootschap + - europese_naamloze_vennootschap + - kerkelijke_organisatie + - naamloze_vennootschap + - onderlinge_waarborg_maatschappij + - overig_privaatrechtelijke_rechtspersoon + - stichting + - vereniging + - vereniging_van_eigenaars + - publiekrechtelijke_rechtspersoon + - vennootschap_onder_firma + - maatschap + - rederij + - commanditaire_vennootschap + - kapitaalvennootschap_binnen_eer + - overige_buitenlandse_rechtspersoon_vennootschap + - kapitaalvennootschap_buiten_eer + bezoekadres: + title: Bezoekadres + description: De gegevens over het adres van de NIET-NATUURLIJK PERSOON + type: string + maxLength: 1000 + subVerblijfBuitenland: + $ref: '#/components/schemas/SubVerblijfBuitenland' + betrokkene_identificatie_RolNietNatuurlijkPersoon: + type: object + properties: + betrokkeneIdentificatie: + $ref: '#/components/schemas/RolNietNatuurlijkPersoon' + niet_natuurlijk_persoon: + type: object + allOf: + - $ref: '#/components/schemas/Rol' + - $ref: '#/components/schemas/betrokkene_identificatie_RolNietNatuurlijkPersoon' + RolVestiging: + type: object + properties: + vestigingsNummer: + title: Vestigings nummer + description: Een korte unieke aanduiding van de Vestiging. + type: string + maxLength: 24 + handelsnaam: + description: De naam van de vestiging waaronder gehandeld wordt. + type: array + items: + title: Handelsnaam + type: string + maxLength: 625 + verblijfsadres: + $ref: '#/components/schemas/VerblijfsAdres' + subVerblijfBuitenland: + $ref: '#/components/schemas/SubVerblijfBuitenland' + kvkNummer: + title: Kvk nummer + description: Een uniek nummer gekoppeld aan de onderneming. + type: string + maxLength: 8 + betrokkene_identificatie_RolVestiging: + type: object + properties: + betrokkeneIdentificatie: + $ref: '#/components/schemas/RolVestiging' + vestiging: + type: object + allOf: + - $ref: '#/components/schemas/Rol' + - $ref: '#/components/schemas/betrokkene_identificatie_RolVestiging' + RolOrganisatorischeEenheid: + type: object + properties: + identificatie: + title: Identificatie + description: Een korte identificatie van de organisatorische eenheid. + type: string + maxLength: 24 + naam: + title: Naam + description: De feitelijke naam van de organisatorische eenheid. + type: string + maxLength: 50 + isGehuisvestIn: + title: Is gehuisvest in + type: string + maxLength: 24 + betrokkene_identificatie_RolOrganisatorischeEenheid: + type: object + properties: + betrokkeneIdentificatie: + $ref: '#/components/schemas/RolOrganisatorischeEenheid' + organisatorische_eenheid: + type: object + allOf: + - $ref: '#/components/schemas/Rol' + - $ref: '#/components/schemas/betrokkene_identificatie_RolOrganisatorischeEenheid' + RolMedewerker: + type: object + properties: + identificatie: + title: Identificatie + description: Een korte unieke aanduiding van de MEDEWERKER. + type: string + maxLength: 24 + achternaam: + title: Achternaam + description: De achternaam zoals de MEDEWERKER die in het dagelijkse verkeer + gebruikt. + type: string + maxLength: 200 + voorletters: + title: Voorletters + description: De verzameling letters die gevormd wordt door de eerste letter + van alle in volgorde voorkomende voornamen. + type: string + maxLength: 20 + voorvoegselAchternaam: + title: Voorvoegsel achternaam + description: Dat deel van de geslachtsnaam dat voorkomt in Tabel 36 (GBA), + voorvoegseltabel, en door een spatie van de geslachtsnaam is + type: string + maxLength: 10 + betrokkene_identificatie_RolMedewerker: + type: object + properties: + betrokkeneIdentificatie: + $ref: '#/components/schemas/RolMedewerker' + medewerker: + type: object + allOf: + - $ref: '#/components/schemas/Rol' + - $ref: '#/components/schemas/betrokkene_identificatie_RolMedewerker' + Status: + required: + - zaak + - statustype + - datumStatusGezet + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + statustype: + title: Statustype + description: URL-referentie naar het STATUSTYPE (in de Catalogi API). + type: string + format: uri + maxLength: 1000 + minLength: 1 + datumStatusGezet: + title: Datum status gezet + description: De datum waarop de ZAAK de status heeft verkregen. + type: string + format: date-time + statustoelichting: + title: Statustoelichting + description: Een, voor de initiator van de zaak relevante, toelichting op + de status van een zaak. + type: string + maxLength: 1000 + indicatieLaatstGezetteStatus: + title: Indicatie laatst gezette status + description: Het gegeven is afleidbaar uit de historie van de attribuutsoort + Datum status gezet van van alle statussen bij de desbetreffende zaak. + type: boolean + readOnly: true + gezetdoor: + title: Gezet door + description: De BETROKKENE die in zijn/haar ROL in een ZAAK heeft geregistreerd + dat STATUSsen in die ZAAK bereikt zijn. + type: string + format: uri + nullable: true + zaakinformatieobjecten: + description: URL-referenties naar ZAAKINFORMATIEOBJECTen. + type: array + items: + description: URL-referenties naar ZAAKINFORMATIEOBJECTen. + type: string + format: uri + readOnly: true + uniqueItems: true + ZaakContactMoment: + required: + - zaak + - contactmoment + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + contactmoment: + title: Contactmoment + description: URL-referentie naar het CONTACTMOMENT (in de CMC API) + type: string + format: uri + maxLength: 1000 + minLength: 1 + ZaakInformatieObject: + required: + - informatieobject + - zaak + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + informatieobject: + title: Informatieobject + description: URL-referentie naar het INFORMATIEOBJECT (in de Documenten + API), waar ook de relatieinformatie opgevraagd kan worden. + type: string + format: uri + maxLength: 1000 + minLength: 1 + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + aardRelatieWeergave: + title: Aard relatie weergave + type: string + enum: + - 'Hoort bij, omgekeerd: kent' + - 'Legt vast, omgekeerd: kan vastgelegd zijn als' + readOnly: true + titel: + title: Titel + description: De naam waaronder het INFORMATIEOBJECT binnen het OBJECT bekend + is. + type: string + maxLength: 200 + beschrijving: + title: Beschrijving + description: Een op het object gerichte beschrijving van de inhoud vanhet + INFORMATIEOBJECT. + type: string + registratiedatum: + title: Registratiedatum + description: De datum waarop de behandelende organisatie het INFORMATIEOBJECT + heeft geregistreerd bij het OBJECT. Geldige waardes zijn datumtijden gelegen + op of voor de huidige datum en tijd. + type: string + format: date-time + readOnly: true + vernietigingsdatum: + title: Vernietigingsdatum + description: De datum waarop het informatieobject uit het zaakdossier verwijderd + moet worden. + type: string + format: date-time + nullable: true + status: + title: Status + description: De bij de desbetreffende ZAAK behorende STATUS waarvoor het + ZAAK-INFORMATIEOBJECT relevant is (geweest) met het oog op het bereiken + van die STATUS en/of de communicatie daarover. + type: string + format: uri + nullable: true + ObjectTypeOverigeDefinitie: + description: |- + Verwijzing naar het schema van het type OBJECT als `objectType` de waarde "overige" heeft. + + * De URL referentie moet naar een JSON endpoint wijzen waarin het objecttype gedefinieerd is, inclusief het [JSON-schema](https://json-schema.org/). + * Gebruik het `schema` attribuut om te verwijzen naar het schema binnen de objecttype resource (deze gebruikt het [jq](http://stedolan.github.io/jq/) formaat. + * Gebruik het `objectData` attribuut om te verwijzen naar de gegevens binnen het OBJECT. Deze gebruikt ook het [jq](http://stedolan.github.io/jq/) formaat. + + Indien je hier gebruikt van maakt, dan moet je een OBJECT url opgeven en is het gebruik van objectIdentificatie niet mogelijk. De opgegeven OBJECT url wordt gevalideerd tegen het schema van het opgegeven objecttype. + required: + - url + - schema + - objectData + type: object + properties: + url: + title: Objecttype-URL + description: URL-referentie naar de objecttype resource in een API. Deze + resource moet de [JSON-schema](https://json-schema.org/)-definitie van + het objecttype bevatten. + type: string + format: uri + maxLength: 1000 + minLength: 1 + schema: + title: schema-pad + description: 'Een geldige [jq](http://stedolan.github.io/jq/) expressie. + Dit wordt gecombineerd met de resource uit het `url`-attribuut om het + schema van het objecttype uit te lezen. Bijvoorbeeld: `.jsonSchema`.' + type: string + maxLength: 100 + minLength: 1 + objectData: + title: objectgegevens-pad + description: 'Een geldige [jq](http://stedolan.github.io/jq/) expressie. + Dit wordt gecombineerd met de JSON data uit de OBJECT url om de objectgegevens + uit te lezen en de vorm van de gegevens tegen het schema te valideren. + Bijvoorbeeld: `.record.data`.' + type: string + maxLength: 100 + minLength: 1 + nullable: true + ZaakObject: + required: + - zaak + - objectType + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + object: + title: Object + description: URL-referentie naar de resource die het OBJECT beschrijft. + type: string + format: uri + maxLength: 1000 + zaakobjecttype: + title: Zaakobjecttype + description: URL-referentie naar het ZAAKOBJECTTYPE (in de Catalogi API). + type: string + format: uri + maxLength: 1000 + objectType: + title: Object type + description: |- + Beschrijft het type OBJECT gerelateerd aan de ZAAK. Als er geen passend type is, dan moet het type worden opgegeven onder `objectTypeOverige`. + + Uitleg bij mogelijke waarden: + + * `adres` - Adres + * `besluit` - Besluit + * `buurt` - Buurt + * `enkelvoudig_document` - Enkelvoudig document + * `gemeente` - Gemeente + * `gemeentelijke_openbare_ruimte` - Gemeentelijke openbare ruimte + * `huishouden` - Huishouden + * `inrichtingselement` - Inrichtingselement + * `kadastrale_onroerende_zaak` - Kadastrale onroerende zaak + * `kunstwerkdeel` - Kunstwerkdeel + * `maatschappelijke_activiteit` - Maatschappelijke activiteit + * `medewerker` - Medewerker + * `natuurlijk_persoon` - Natuurlijk persoon + * `niet_natuurlijk_persoon` - Niet-natuurlijk persoon + * `openbare_ruimte` - Openbare ruimte + * `organisatorische_eenheid` - Organisatorische eenheid + * `pand` - Pand + * `spoorbaandeel` - Spoorbaandeel + * `status` - Status + * `terreindeel` - Terreindeel + * `terrein_gebouwd_object` - Terrein gebouwd object + * `vestiging` - Vestiging + * `waterdeel` - Waterdeel + * `wegdeel` - Wegdeel + * `wijk` - Wijk + * `woonplaats` - Woonplaats + * `woz_deelobject` - Woz deel object + * `woz_object` - Woz object + * `woz_waarde` - Woz waarde + * `zakelijk_recht` - Zakelijk recht + * `overige` - Overige + type: string + enum: + - adres + - besluit + - buurt + - enkelvoudig_document + - gemeente + - gemeentelijke_openbare_ruimte + - huishouden + - inrichtingselement + - kadastrale_onroerende_zaak + - kunstwerkdeel + - maatschappelijke_activiteit + - medewerker + - natuurlijk_persoon + - niet_natuurlijk_persoon + - openbare_ruimte + - organisatorische_eenheid + - pand + - spoorbaandeel + - status + - terreindeel + - terrein_gebouwd_object + - vestiging + - waterdeel + - wegdeel + - wijk + - woonplaats + - woz_deelobject + - woz_object + - woz_waarde + - zakelijk_recht + - overige + objectTypeOverige: + title: Object type overige + description: Beschrijft het type OBJECT als `objectType` de waarde "overige" + heeft. + type: string + pattern: '[a-z_]+' + maxLength: 100 + objectTypeOverigeDefinitie: + $ref: '#/components/schemas/ObjectTypeOverigeDefinitie' + relatieomschrijving: + title: Relatieomschrijving + description: Omschrijving van de betrekking tussen de ZAAK en het OBJECT. + type: string + maxLength: 80 + discriminator: + propertyName: objectType + ObjectAdres: + required: + - identificatie + - wplWoonplaatsNaam + - gorOpenbareRuimteNaam + - huisnummer + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + wplWoonplaatsNaam: + title: Wpl woonplaats naam + type: string + maxLength: 80 + minLength: 1 + gorOpenbareRuimteNaam: + title: Gor openbare ruimte naam + description: Een door het bevoegde gemeentelijke orgaan aan een OPENBARE + RUIMTE toegekende benaming + type: string + maxLength: 80 + minLength: 1 + huisnummer: + title: Huisnummer + type: integer + maximum: 99999 + minimum: 0 + huisletter: + title: Huisletter + type: string + maxLength: 1 + huisnummertoevoeging: + title: Huisnummertoevoeging + type: string + maxLength: 4 + postcode: + title: Postcode + type: string + maxLength: 7 + object_identificatie_ObjectAdres: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectAdres' + adres: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectAdres' + besluit: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + ObjectBuurt: + required: + - buurtCode + - buurtNaam + - gemGemeenteCode + - wykWijkCode + type: object + properties: + buurtCode: + title: Buurt code + description: De code behorende bij de naam van de buurt + type: string + maxLength: 2 + minLength: 1 + buurtNaam: + title: Buurt naam + description: De naam van de buurt, zoals die door het CBS wordt gebruikt. + type: string + maxLength: 40 + minLength: 1 + gemGemeenteCode: + title: Gem gemeente code + description: Een numerieke aanduiding waarmee een Nederlandse gemeente uniek + wordt aangeduid + type: string + maxLength: 4 + minLength: 1 + wykWijkCode: + title: Wyk wijk code + description: De code behorende bij de naam van de wijk + type: string + maxLength: 2 + minLength: 1 + object_identificatie_ObjectBuurt: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectBuurt' + buurt: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectBuurt' + enkelvoudig_document: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + ObjectGemeente: + required: + - gemeenteNaam + - gemeenteCode + type: object + properties: + gemeenteNaam: + title: Gemeente naam + description: "De offici\xEBle door de gemeente vastgestelde gemeentenaam." + type: string + maxLength: 80 + minLength: 1 + gemeenteCode: + title: Gemeente code + description: Een numerieke aanduiding waarmee een Nederlandse gemeente uniek + wordt aangeduid + type: string + maxLength: 4 + minLength: 1 + object_identificatie_ObjectGemeente: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectGemeente' + gemeente: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectGemeente' + ObjectGemeentelijkeOpenbareRuimte: + required: + - identificatie + - openbareRuimteNaam + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + openbareRuimteNaam: + title: Openbare ruimte naam + description: Een door het bevoegde gemeentelijke orgaan aan een OPENBARE + RUIMTE toegekende benaming + type: string + maxLength: 80 + minLength: 1 + object_identificatie_ObjectGemeentelijkeOpenbareRuimte: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectGemeentelijkeOpenbareRuimte' + gemeentelijke_openbare_ruimte: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectGemeentelijkeOpenbareRuimte' + TerreinGebouwdObjectAdres: + required: + - oaoIdentificatie + - wplWoonplaatsNaam + - gorOpenbareRuimteNaam + - aoaHuisnummer + type: object + properties: + numIdentificatie: + title: Num identificatie + type: string + maxLength: 100 + oaoIdentificatie: + title: Oao identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + wplWoonplaatsNaam: + title: Wpl woonplaats naam + type: string + maxLength: 80 + minLength: 1 + gorOpenbareRuimteNaam: + title: Gor openbare ruimte naam + description: Een door het bevoegde gemeentelijke orgaan aan een OPENBARE + RUIMTE toegekende benaming + type: string + maxLength: 80 + minLength: 1 + aoaPostcode: + title: Aoa postcode + type: string + maxLength: 7 + aoaHuisnummer: + title: Aoa huisnummer + type: integer + maximum: 99999 + minimum: 0 + aoaHuisletter: + title: Aoa huisletter + type: string + maxLength: 1 + aoaHuisnummertoevoeging: + title: Aoa huisnummertoevoeging + type: string + maxLength: 4 + ogoLocatieAanduiding: + title: Ogo locatie aanduiding + type: string + maxLength: 100 + nullable: true + ObjectTerreinGebouwdObject: + required: + - identificatie + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + adresAanduidingGrp: + $ref: '#/components/schemas/TerreinGebouwdObjectAdres' + nullable: true + ObjectHuishouden: + required: + - nummer + type: object + properties: + nummer: + title: Nummer + description: Uniek identificerend administratienummer van een huishouden + zoals toegekend door de gemeente waarin het huishouden woonachtig is. + type: string + maxLength: 12 + minLength: 1 + isGehuisvestIn: + $ref: '#/components/schemas/ObjectTerreinGebouwdObject' + object_identificatie_ObjectHuishouden: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectHuishouden' + huishouden: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectHuishouden' + ObjectInrichtingselement: + required: + - type + - identificatie + type: object + properties: + type: + title: Type + description: |- + Specificatie van de aard van het inrichtingselement. + + Uitleg bij mogelijke waarden: + + * `bak` - Bak + * `bord` - Bord + * `installatie` - Installatie + * `kast` - Kast + * `mast` - Mast + * `paal` - Paal + * `sensor` - Sensor + * `straatmeubilair` - Straatmeubilair + * `waterinrichtingselement` - Waterinrichtingselement + * `weginrichtingselement` - Weginrichtingselement + type: string + enum: + - bak + - bord + - installatie + - kast + - mast + - paal + - sensor + - straatmeubilair + - waterinrichtingselement + - weginrichtingselement + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + naam: + title: Naam + description: De benaming van het OBJECT + type: string + maxLength: 500 + object_identificatie_ObjectInrichtingselement: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectInrichtingselement' + inrichtingselement: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectInrichtingselement' + ObjectKadastraleOnroerendeZaak: + required: + - kadastraleIdentificatie + - kadastraleAanduiding + type: object + properties: + kadastraleIdentificatie: + title: Kadastrale identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + kadastraleAanduiding: + title: Kadastrale aanduiding + description: De typering van de kadastrale aanduiding van een onroerende + zaak conform Kadaster + type: string + maxLength: 1000 + minLength: 1 + object_identificatie_ObjectKadastraleOnroerendeZaak: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectKadastraleOnroerendeZaak' + kadastrale_onroerende_zaak: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectKadastraleOnroerendeZaak' + ObjectKunstwerkdeel: + required: + - type + - identificatie + - naam + type: object + properties: + type: + title: Type + description: |- + Specificatie van het soort Kunstwerk waartoe het kunstwerkdeel behoort. + + Uitleg bij mogelijke waarden: + + * `keermuur` - Keermuur + * `overkluizing` - Overkluizing + * `duiker` - Duiker + * `faunavoorziening` - Faunavoorziening + * `vispassage` - Vispassage + * `bodemval` - Bodemval + * `coupure` - Coupure + * `ponton` - Ponton + * `voorde` - Voorde + * `hoogspanningsmast` - Hoogspanningsmast + * `gemaal` - Gemaal + * `perron` - Perron + * `sluis` - Sluis + * `strekdam` - Strekdam + * `steiger` - Steiger + * `stuw` - Stuw + type: string + enum: + - keermuur + - overkluizing + - duiker + - faunavoorziening + - vispassage + - bodemval + - coupure + - ponton + - voorde + - hoogspanningsmast + - gemaal + - perron + - sluis + - strekdam + - steiger + - stuw + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + naam: + title: Naam + type: string + maxLength: 80 + minLength: 1 + object_identificatie_ObjectKunstwerkdeel: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectKunstwerkdeel' + kunstwerkdeel: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectKunstwerkdeel' + ObjectMaatschappelijkeActiviteit: + required: + - kvkNummer + - handelsnaam + type: object + properties: + kvkNummer: + title: Kvk nummer + description: Landelijk uniek identificerend administratienummer van een + MAATSCHAPPELIJKE ACTIVITEIT zoals toegewezen door de Kamer van Koophandel + (KvK). + type: string + maxLength: 8 + minLength: 1 + handelsnaam: + title: Handelsnaam + description: De naam waaronder de onderneming handelt. + type: string + maxLength: 200 + minLength: 1 + object_identificatie_ObjectMaatschappelijkeActiviteit: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectMaatschappelijkeActiviteit' + maatschappelijke_activiteit: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectMaatschappelijkeActiviteit' + object_identificatie_RolMedewerker: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/RolMedewerker' + object_identificatie_RolNatuurlijkPersoon: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/RolNatuurlijkPersoon' + object_identificatie_RolNietNatuurlijkPersoon: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/RolNietNatuurlijkPersoon' + ObjectOpenbareRuimte: + required: + - identificatie + - wplWoonplaatsNaam + - gorOpenbareRuimteNaam + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + wplWoonplaatsNaam: + title: Wpl woonplaats naam + type: string + maxLength: 80 + minLength: 1 + gorOpenbareRuimteNaam: + title: Gor openbare ruimte naam + description: Een door het bevoegde gemeentelijke orgaan aan een OPENBARE + RUIMTE toegekende benaming + type: string + maxLength: 80 + minLength: 1 + object_identificatie_ObjectOpenbareRuimte: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectOpenbareRuimte' + openbare_ruimte: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectOpenbareRuimte' + object_identificatie_RolOrganisatorischeEenheid: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/RolOrganisatorischeEenheid' + ObjectPand: + required: + - identificatie + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + object_identificatie_ObjectPand: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectPand' + pand: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectPand' + ObjectSpoorbaandeel: + required: + - type + - identificatie + type: object + properties: + type: + title: Type + description: |- + Specificatie van het soort Spoorbaan + + Uitleg bij mogelijke waarden: + + * `breedspoor` - breedspoor + * `normaalspoor` - normaalspoor + * `smalspoor` - smalspoor + * `spoorbaan` - spoorbaan + type: string + enum: + - breedspoor + - normaalspoor + - smalspoor + - spoorbaan + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + naam: + title: Naam + description: De benaming van het OBJECT + type: string + maxLength: 500 + object_identificatie_ObjectSpoorbaandeel: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectSpoorbaandeel' + spoorbaandeel: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectSpoorbaandeel' + status: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + ObjectTerreindeel: + required: + - type + - identificatie + type: object + properties: + type: + title: Type + type: string + maxLength: 40 + minLength: 1 + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + naam: + title: Naam + description: De benaming van het OBJECT + type: string + maxLength: 500 + object_identificatie_ObjectTerreindeel: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectTerreindeel' + terreindeel: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectTerreindeel' + object_identificatie_ObjectTerreinGebouwdObject: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectTerreinGebouwdObject' + terrein_gebouwd_object: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectTerreinGebouwdObject' + object_identificatie_RolVestiging: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/RolVestiging' + ObjectWaterdeel: + required: + - typeWaterdeel + - identificatie + type: object + properties: + typeWaterdeel: + title: Type waterdeel + description: |- + Specificatie van het soort water + + Uitleg bij mogelijke waarden: + + * `zee` - Zee + * `waterloop` - Waterloop + * `watervlakte` - Watervlakte + * `greppel_droge_sloot` - Greppel, droge sloot + type: string + enum: + - zee + - waterloop + - watervlakte + - greppel_droge_sloot + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + naam: + title: Naam + description: De benaming van het OBJECT + type: string + maxLength: 500 + object_identificatie_ObjectWaterdeel: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWaterdeel' + waterdeel: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWaterdeel' + ObjectWegdeel: + required: + - type + - identificatie + type: object + properties: + type: + title: Type + type: string + maxLength: 100 + minLength: 1 + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + naam: + title: Naam + description: De benaming van het OBJECT + type: string + maxLength: 500 + object_identificatie_ObjectWegdeel: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWegdeel' + wegdeel: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWegdeel' + ObjectWijk: + required: + - wijkCode + - wijkNaam + - gemGemeenteCode + type: object + properties: + wijkCode: + title: Wijk code + description: De code behorende bij de naam van de wijk. + type: string + maxLength: 2 + minLength: 1 + wijkNaam: + title: Wijk naam + description: De naam van de wijk, zoals die door het CBS wordt gebruikt. + type: string + maxLength: 40 + minLength: 1 + gemGemeenteCode: + title: Gem gemeente code + description: Een numerieke aanduiding waarmee een Nederlandse gemeente uniek + wordt aangeduid + type: string + maxLength: 4 + minLength: 1 + object_identificatie_ObjectWijk: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWijk' + wijk: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWijk' + ObjectWoonplaats: + required: + - identificatie + - woonplaatsNaam + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + woonplaatsNaam: + title: Woonplaats naam + description: De door het bevoegde gemeentelijke orgaan aan een WOONPLAATS + toegekende benaming. + type: string + maxLength: 80 + minLength: 1 + object_identificatie_ObjectWoonplaats: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWoonplaats' + woonplaats: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWoonplaats' + WozObjectAdres: + required: + - aoaIdentificatie + - wplWoonplaatsNaam + - gorOpenbareRuimteNaam + - aoaHuisnummer + type: object + properties: + aoaIdentificatie: + title: Aoa identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + wplWoonplaatsNaam: + title: Wpl woonplaats naam + type: string + maxLength: 80 + minLength: 1 + gorOpenbareRuimteNaam: + title: Gor openbare ruimte naam + description: Een door het bevoegde gemeentelijke orgaan aan een OPENBARE + RUIMTE toegekende benaming + type: string + maxLength: 80 + minLength: 1 + aoaPostcode: + title: Aoa postcode + type: string + maxLength: 7 + aoaHuisnummer: + title: Aoa huisnummer + type: integer + maximum: 99999 + minimum: 0 + aoaHuisletter: + title: Aoa huisletter + type: string + maxLength: 1 + aoaHuisnummertoevoeging: + title: Aoa huisnummertoevoeging + type: string + maxLength: 4 + locatieOmschrijving: + title: Locatie omschrijving + type: string + maxLength: 1000 + nullable: true + ObjectWozObject: + required: + - wozObjectNummer + type: object + properties: + wozObjectNummer: + title: Woz object nummer + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + aanduidingWozObject: + $ref: '#/components/schemas/WozObjectAdres' + ObjectWozDeelobject: + required: + - nummerWozDeelObject + type: object + properties: + nummerWozDeelObject: + title: Nummer woz deel object + description: Uniek identificatienummer voor het deelobject binnen een WOZ-object. + type: string + maxLength: 6 + minLength: 1 + isOnderdeelVan: + $ref: '#/components/schemas/ObjectWozObject' + object_identificatie_ObjectWozDeelobject: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWozDeelobject' + woz_deelobject: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWozDeelobject' + object_identificatie_ObjectWozObject: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWozObject' + woz_object: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWozObject' + ObjectWozWaarde: + required: + - waardepeildatum + type: object + properties: + waardepeildatum: + title: Waardepeildatum + description: De datum waarnaar de waarde van het WOZ-object wordt bepaald. + type: string + maxLength: 9 + minLength: 1 + isVoor: + $ref: '#/components/schemas/ObjectWozObject' + object_identificatie_ObjectWozWaarde: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectWozWaarde' + woz_waarde: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectWozWaarde' + ZakelijkRechtHeeftAlsGerechtigde: + type: object + properties: + natuurlijkPersoon: + $ref: '#/components/schemas/RolNatuurlijkPersoon' + nietNatuurlijkPersoon: + $ref: '#/components/schemas/RolNietNatuurlijkPersoon' + ObjectZakelijkRecht: + required: + - identificatie + - avgAard + type: object + properties: + identificatie: + title: Identificatie + description: De unieke identificatie van het OBJECT + type: string + maxLength: 100 + minLength: 1 + avgAard: + title: Avg aard + description: aanduiding voor de aard van het recht + type: string + maxLength: 1000 + minLength: 1 + heeftBetrekkingOp: + $ref: '#/components/schemas/ObjectKadastraleOnroerendeZaak' + heeftAlsGerechtigde: + $ref: '#/components/schemas/ZakelijkRechtHeeftAlsGerechtigde' + object_identificatie_ObjectZakelijkRecht: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectZakelijkRecht' + zakelijk_recht: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectZakelijkRecht' + ObjectOverige: + required: + - overigeData + type: object + properties: + overigeData: + title: Overige data + type: object + object_identificatie_ObjectOverige: + type: object + properties: + objectIdentificatie: + $ref: '#/components/schemas/ObjectOverige' + overige: + type: object + allOf: + - $ref: '#/components/schemas/ZaakObject' + - $ref: '#/components/schemas/object_identificatie_ObjectOverige' + ZaakVerzoek: + required: + - zaak + - verzoek + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + description: URL-referentie naar de ZAAK. + type: string + format: uri + verzoek: + title: Verzoek + description: URL-referentie naar het VERZOEK (in de Klantinteractie API) + type: string + format: uri + maxLength: 1000 + minLength: 1 + Geometry: + title: Geometry + description: GeoJSON geometry + required: + - type + type: object + properties: + type: + description: The geometry type + type: string + enum: + - Point + - MultiPoint + - LineString + - MultiLineString + - Polygon + - MultiPolygon + - Feature + - FeatureCollection + - GeometryCollection + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1 + Point2D: + title: Point2D + description: A 2D point + type: array + items: + type: number + maxItems: 2 + minItems: 2 + Point: + description: GeoJSON point geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - coordinates + type: object + properties: + coordinates: + $ref: '#/components/schemas/Point2D' + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.2 + MultiPoint: + description: GeoJSON multi-point geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - coordinates + type: object + properties: + coordinates: + type: array + items: + $ref: '#/components/schemas/Point2D' + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.3 + LineString: + description: GeoJSON line-string geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - coordinates + type: object + properties: + coordinates: + type: array + items: + $ref: '#/components/schemas/Point2D' + minItems: 2 + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.4 + MultiLineString: + description: GeoJSON multi-line-string geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - coordinates + type: object + properties: + coordinates: + type: array + items: + type: array + items: + $ref: '#/components/schemas/Point2D' + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.5 + Polygon: + description: GeoJSON polygon geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - coordinates + type: object + properties: + coordinates: + type: array + items: + type: array + items: + $ref: '#/components/schemas/Point2D' + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.6 + MultiPolygon: + description: GeoJSON multi-polygon geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - coordinates + type: object + properties: + coordinates: + type: array + items: + type: array + items: + type: array + items: + $ref: '#/components/schemas/Point2D' + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.7 + GeometryCollection: + description: GeoJSON multi-polygon geometry + type: object + allOf: + - $ref: '#/components/schemas/Geometry' + - required: + - geometries + type: object + properties: + geometries: + type: array + items: + $ref: '#/components/schemas/Geometry' + externalDocs: + url: https://tools.ietf.org/html/rfc7946#section-3.1.8 + GeoJSONGeometry: + title: GeoJSONGeometry + type: object + discriminator: + propertyName: type + oneOf: + - $ref: '#/components/schemas/Point' + - $ref: '#/components/schemas/MultiPoint' + - $ref: '#/components/schemas/LineString' + - $ref: '#/components/schemas/MultiLineString' + - $ref: '#/components/schemas/Polygon' + - $ref: '#/components/schemas/MultiPolygon' + - $ref: '#/components/schemas/GeometryCollection' + Verlenging: + description: Gegevens omtrent het verlengen van de doorlooptijd van de behandeling + van de ZAAK + required: + - reden + - duur + type: object + properties: + reden: + title: Reden + description: Omschrijving van de reden voor het verlengen van de behandeling + van de zaak. + type: string + maxLength: 200 + minLength: 1 + duur: + title: Duur + description: Het aantal werkbare dagen waarmee de doorlooptijd van de behandeling + van de ZAAK is verlengd (of verkort) ten opzichte van de eerder gecommuniceerde + doorlooptijd. + type: string + format: duration + nullable: true + Opschorting: + description: Gegevens omtrent het tijdelijk opschorten van de behandeling van + de ZAAK + required: + - indicatie + - reden + type: object + properties: + indicatie: + title: Indicatie + description: Aanduiding of de behandeling van de ZAAK tijdelijk is opgeschort. + type: boolean + reden: + title: Reden + description: Omschrijving van de reden voor het opschorten van de behandeling + van de zaak. + type: string + maxLength: 200 + nullable: true + RelevanteZaak: + description: Een lijst van relevante andere zaken. + required: + - url + - aardRelatie + type: object + properties: + url: + title: Url + description: URL-referentie naar de ZAAK. + type: string + format: uri + maxLength: 1000 + minLength: 1 + aardRelatie: + title: Aard relatie + description: |- + Benamingen van de aard van de relaties van andere zaken tot (onderhanden) zaken. + + Uitleg bij mogelijke waarden: + + * `vervolg` - De andere zaak gaf aanleiding tot het starten van de onderhanden zaak. + * `onderwerp` - De andere zaak is relevant voor cq. is onderwerp van de onderhanden zaak. + * `bijdrage` - Aan het bereiken van de uitkomst van de andere zaak levert de onderhanden zaak een bijdrage. + type: string + enum: + - vervolg + - onderwerp + - bijdrage + ZaakKenmerk: + description: Lijst van kenmerken. Merk op dat refereren naar gerelateerde objecten + beter kan via `ZaakObject`. + required: + - kenmerk + - bron + type: object + properties: + kenmerk: + title: Kenmerk + description: Identificeert uniek de zaak in een andere administratie. + type: string + maxLength: 40 + minLength: 1 + bron: + title: Bron + description: De aanduiding van de administratie waar het kenmerk op slaat. + type: string + maxLength: 40 + minLength: 1 + Processobject: + description: Specificatie van de attribuutsoort van het object, subject of gebeurtenis waarop, + vanuit archiveringsoptiek, de zaak betrekking heeft en dat bepalend is voor + de start van de archiefactietermijn. + required: + - datumkenmerk + - identificatie + - objecttype + - registratie + type: object + properties: + datumkenmerk: + title: Datumkenmerk + description: De naam van de attribuutsoort van het procesobject dat bepalend + is voor het einde van de procestermijn. + type: string + maxLength: 250 + minLength: 1 + identificatie: + title: Identificatie + description: De unieke aanduiding van het procesobject. + type: string + maxLength: 250 + minLength: 1 + objecttype: + title: Objecttype + description: Het soort object dat het procesobject representeert. + type: string + maxLength: 250 + minLength: 1 + registratie: + title: Registratie + description: De naam van de registratie waarvan het procesobject deel uit + maakt. + type: string + maxLength: 250 + minLength: 1 + nullable: true + Zaak: + required: + - bronorganisatie + - zaaktype + - verantwoordelijkeOrganisatie + - startdatum + type: object + properties: + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + identificatie: + title: Identificatie + description: De unieke identificatie van de ZAAK binnen de organisatie die + verantwoordelijk is voor de behandeling van de ZAAK. + type: string + maxLength: 40 + bronorganisatie: + title: Bronorganisatie + description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie + die de zaak heeft gecreeerd. Dit moet een geldig RSIN zijn van 9 nummers + en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef + type: string + maxLength: 9 + minLength: 1 + omschrijving: + title: Omschrijving + description: Een korte omschrijving van de zaak. + type: string + maxLength: 80 + toelichting: + title: Toelichting + description: Een toelichting op de zaak. + type: string + maxLength: 1000 + zaaktype: + title: Zaaktype + description: URL-referentie naar het ZAAKTYPE (in de Catalogi API). + type: string + format: uri + maxLength: 1000 + minLength: 1 + registratiedatum: + title: Registratiedatum + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + type: string + format: date + verantwoordelijkeOrganisatie: + title: Verantwoordelijke organisatie + description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie + die eindverantwoordelijk is voor de behandeling van de zaak. Dit moet + een geldig RSIN zijn van 9 nummers en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef + type: string + maxLength: 9 + minLength: 1 + startdatum: + title: Startdatum + description: De datum waarop met de uitvoering van de zaak is gestart + type: string + format: date + einddatum: + title: Einddatum + description: De datum waarop de uitvoering van de zaak afgerond is. + type: string + format: date + readOnly: true + nullable: true + einddatumGepland: + title: Einddatum gepland + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + type: string + format: date + nullable: true + uiterlijkeEinddatumAfdoening: + title: Uiterlijke einddatum afdoening + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + type: string + format: date + nullable: true + publicatiedatum: + title: Publicatiedatum + description: Datum waarop (het starten van) de zaak gepubliceerd is of wordt. + type: string + format: date + nullable: true + communicatiekanaal: + title: Communicatiekanaal + description: Het medium waarlangs de aanleiding om een zaak te starten is + ontvangen. URL naar een communicatiekanaal in de VNG-Referentielijst van + communicatiekanalen. + type: string + format: uri + maxLength: 1000 + productenOfDiensten: + description: De producten en/of diensten die door de zaak worden voortgebracht. + Dit zijn URLs naar de resources zoals die door de producten- en dienstencatalogus-API + wordt ontsloten. De producten/diensten moeten bij het zaaktype vermeld + zijn. + type: array + items: + title: URL naar product/dienst + type: string + format: uri + maxLength: 1000 + minLength: 1 + vertrouwelijkheidaanduiding: + title: Vertrouwlijkheidaanduiding + description: Aanduiding van de mate waarin het zaakdossier van de ZAAK voor + de openbaarheid bestemd is. Optioneel - indien geen waarde gekozen wordt, + dan wordt de waarde van het ZAAKTYPE overgenomen. Dit betekent dat de + API _altijd_ een waarde teruggeeft. + type: string + enum: + - openbaar + - beperkt_openbaar + - intern + - zaakvertrouwelijk + - vertrouwelijk + - confidentieel + - geheim + - zeer_geheim + betalingsindicatie: + title: Betalingsindicatie + description: |- + Indicatie of de, met behandeling van de zaak gemoeide, kosten betaald zijn door de desbetreffende betrokkene. + + Uitleg bij mogelijke waarden: + + * `nvt` - Er is geen sprake van te betalen, met de zaak gemoeide, kosten. + * `nog_niet` - De met de zaak gemoeide kosten zijn (nog) niet betaald. + * `gedeeltelijk` - De met de zaak gemoeide kosten zijn gedeeltelijk betaald. + * `geheel` - De met de zaak gemoeide kosten zijn geheel betaald. + type: string + enum: + - nvt + - nog_niet + - gedeeltelijk + - geheel + betalingsindicatieWeergave: + title: Betalingsindicatie weergave + description: Uitleg bij `betalingsindicatie`. + type: string + readOnly: true + minLength: 1 + laatsteBetaaldatum: + title: Laatste betaaldatum + description: De datum waarop de meest recente betaling is verwerkt van kosten + die gemoeid zijn met behandeling van de zaak. + type: string + format: date-time + nullable: true + zaakgeometrie: + $ref: '#/components/schemas/GeoJSONGeometry' + verlenging: + $ref: '#/components/schemas/Verlenging' + opschorting: + $ref: '#/components/schemas/Opschorting' + selectielijstklasse: + title: Selectielijstklasse + description: URL-referentie naar de categorie in de gehanteerde 'Selectielijst + Archiefbescheiden' die, gezien het zaaktype en het resultaattype van de + zaak, bepalend is voor het archiefregime van de zaak. + type: string + format: uri + maxLength: 1000 + hoofdzaak: + title: Is deelzaak van + description: "URL-referentie naar de ZAAK, waarom verzocht is door de initiator\ + \ daarvan, die behandeld wordt in twee of meer separate ZAAKen waarvan\ + \ de onderhavige ZAAK er \xE9\xE9n is." + type: string + format: uri + nullable: true + deelzaken: + description: URL-referenties naar deel ZAAKen. + type: array + items: + description: URL-referenties naar deel ZAAKen. + type: string + format: uri + readOnly: true + uniqueItems: true + relevanteAndereZaken: + description: Een lijst van relevante andere zaken. + type: array + items: + $ref: '#/components/schemas/RelevanteZaak' + eigenschappen: + type: array + items: + type: string + format: uri + readOnly: true + uniqueItems: true + rollen: + description: URL-referenties naar ROLLen. + type: array + items: + description: URL-referenties naar ROLLen. + type: string + format: uri + readOnly: true + uniqueItems: true + status: + title: Status + description: Indien geen status bekend is, dan is de waarde 'null' + type: string + format: uri + readOnly: true + nullable: true + zaakinformatieobjecten: + description: URL-referenties naar ZAAKINFORMATIEOBJECTen. + type: array + items: + description: URL-referenties naar ZAAKINFORMATIEOBJECTen. + type: string + format: uri + readOnly: true + uniqueItems: true + zaakobjecten: + description: URL-referenties naar ZAAKOBJECTen. + type: array + items: + description: URL-referenties naar ZAAKOBJECTen. + type: string + format: uri + readOnly: true + uniqueItems: true + kenmerken: + description: Lijst van kenmerken. Merk op dat refereren naar gerelateerde + objecten beter kan via `ZaakObject`. + type: array + items: + $ref: '#/components/schemas/ZaakKenmerk' + archiefnominatie: + title: Archiefnominatie + description: |- + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden. + + Uitleg bij mogelijke waarden: + + * `blijvend_bewaren` - Het zaakdossier moet bewaard blijven en op de Archiefactiedatum overgedragen worden naar een archiefbewaarplaats. + * `vernietigen` - Het zaakdossier moet op of na de Archiefactiedatum vernietigd worden. + type: string + enum: + - blijvend_bewaren + - vernietigen + nullable: true + archiefstatus: + title: Archiefstatus + description: |- + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden. + + Uitleg bij mogelijke waarden: + + * `nog_te_archiveren` - De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd. + * `gearchiveerd` - De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt. + * `gearchiveerd_procestermijn_onbekend` - De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt maar de vernietigingsdatum kan nog niet bepaald worden. + * `overgedragen` - De zaak cq. het zaakdossier is overgebracht naar een archiefbewaarplaats. + type: string + enum: + - nog_te_archiveren + - gearchiveerd + - gearchiveerd_procestermijn_onbekend + - overgedragen + archiefactiedatum: + title: Archiefactiedatum + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + type: string + format: date + nullable: true + resultaat: + title: Resultaat + description: URL-referentie naar het RESULTAAT. Indien geen resultaat bekend + is, dan is de waarde 'null' + type: string + format: uri + readOnly: true + nullable: true + opdrachtgevendeOrganisatie: + title: Opdrachtgevende organisatie + description: De krachtens publiekrecht ingestelde rechtspersoon dan wel + ander niet-natuurlijk persoon waarbinnen het (bestuurs)orgaan zetelt dat + opdracht heeft gegeven om taken uit te voeren waaraan de zaak invulling + geeft. + type: string + maxLength: 9 + processobjectaard: + title: Procesobjectaard + description: Omschrijving van het object, subject of gebeurtenis waarop, + vanuit archiveringsoptiek, de zaak betrekking heeft. + type: string + maxLength: 200 + resultaattoelichting: + title: Resultaattoelichting + description: Een toelichting op wat het resultaat van de zaak inhoudt. + type: string + maxLength: 1000 + startdatumBewaartermijn: + title: Startdatum bewaartermijn + description: De datum die de start markeert van de termijn waarop het zaakdossier + vernietigd moet worden. + type: string + format: date + nullable: true + processobject: + $ref: '#/components/schemas/Processobject' + GeoWithin: + type: object + properties: + within: + $ref: '#/components/schemas/GeoJSONGeometry' + ZaakZoek: + type: object + properties: + zaakgeometrie: + $ref: '#/components/schemas/GeoWithin' + uuid__in: + description: Lijst van unieke resource identifiers (UUID4) + type: array + items: + type: string + format: uuid + zaaktype__in: + description: Array van zaaktypen. + type: array + items: + type: string + format: uri + identificatie: + title: Identificatie + description: De unieke identificatie van de ZAAK binnen de organisatie die + verantwoordelijk is voor de behandeling van de ZAAK. + type: string + minLength: 1 + bronorganisatie: + title: Bronorganisatie + description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie + die de zaak heeft gecreeerd. Dit moet een geldig RSIN zijn van 9 nummers + en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef + type: string + minLength: 1 + bronorganisatie__in: + description: Multiple values may be separated by commas. + type: array + items: + type: string + nullable: true + zaaktype: + title: Zaaktype + description: URL-referentie naar het ZAAKTYPE (in de Catalogi API). + type: string + minLength: 1 + archiefnominatie: + title: Archiefnominatie + description: |- + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden. + + Uitleg bij mogelijke waarden: + + * `blijvend_bewaren` - Het zaakdossier moet bewaard blijven en op de Archiefactiedatum overgedragen worden naar een archiefbewaarplaats. + * `vernietigen` - Het zaakdossier moet op of na de Archiefactiedatum vernietigd worden. + type: string + enum: + - blijvend_bewaren + - vernietigen + archiefnominatie__in: + description: Multiple values may be separated by commas. + type: array + items: + type: string + nullable: true + archiefactiedatum: + title: Archiefactiedatum + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + type: string + minLength: 1 + archiefactiedatum__lt: + title: Archiefactiedatum lt + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + type: string + minLength: 1 + archiefactiedatum__gt: + title: Archiefactiedatum gt + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + type: string + minLength: 1 + archiefactiedatum__isnull: + title: Archiefactiedatum isnull + description: De datum waarop het gearchiveerde zaakdossier vernietigd moet + worden dan wel overgebracht moet worden naar een archiefbewaarplaats. + Wordt automatisch berekend bij het aanmaken of wijzigen van een RESULTAAT + aan deze ZAAK indien nog leeg. + type: string + minLength: 1 + archiefstatus: + title: Archiefstatus + description: |- + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden. + + Uitleg bij mogelijke waarden: + + * `nog_te_archiveren` - De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd. + * `gearchiveerd` - De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt. + * `gearchiveerd_procestermijn_onbekend` - De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt maar de vernietigingsdatum kan nog niet bepaald worden. + * `overgedragen` - De zaak cq. het zaakdossier is overgebracht naar een archiefbewaarplaats. + type: string + enum: + - nog_te_archiveren + - gearchiveerd + - gearchiveerd_procestermijn_onbekend + - overgedragen + archiefstatus__in: + description: Multiple values may be separated by commas. + type: array + items: + type: string + nullable: true + startdatum: + title: Startdatum + description: De datum waarop met de uitvoering van de zaak is gestart + type: string + minLength: 1 + startdatum__gt: + title: Startdatum gt + description: De datum waarop met de uitvoering van de zaak is gestart + type: string + minLength: 1 + startdatum__gte: + title: Startdatum gte + description: De datum waarop met de uitvoering van de zaak is gestart + type: string + minLength: 1 + startdatum__lt: + title: Startdatum lt + description: De datum waarop met de uitvoering van de zaak is gestart + type: string + minLength: 1 + startdatum__lte: + title: Startdatum lte + description: De datum waarop met de uitvoering van de zaak is gestart + type: string + minLength: 1 + registratiedatum: + title: Registratiedatum + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + type: string + minLength: 1 + registratiedatum__gt: + title: Registratiedatum gt + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + type: string + minLength: 1 + registratiedatum__lt: + title: Registratiedatum lt + description: De datum waarop de zaakbehandelende organisatie de ZAAK heeft + geregistreerd. Indien deze niet opgegeven wordt, wordt de datum van vandaag + gebruikt. + type: string + minLength: 1 + einddatum: + title: Einddatum + description: De datum waarop de uitvoering van de zaak afgerond is. + type: string + minLength: 1 + einddatum__gt: + title: Einddatum gt + description: De datum waarop de uitvoering van de zaak afgerond is. + type: string + minLength: 1 + einddatum__lt: + title: Einddatum lt + description: De datum waarop de uitvoering van de zaak afgerond is. + type: string + minLength: 1 + einddatum__isnull: + title: Einddatum isnull + description: De datum waarop de uitvoering van de zaak afgerond is. + type: string + minLength: 1 + einddatumGepland: + title: Einddatumgepland + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + type: string + minLength: 1 + einddatumGepland__gt: + title: Einddatumgepland gt + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + type: string + minLength: 1 + einddatumGepland__lt: + title: Einddatumgepland lt + description: De datum waarop volgens de planning verwacht wordt dat de zaak + afgerond wordt. + type: string + minLength: 1 + uiterlijkeEinddatumAfdoening: + title: Uiterlijkeeinddatumafdoening + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + type: string + minLength: 1 + uiterlijkeEinddatumAfdoening__gt: + title: Uiterlijkeeinddatumafdoening gt + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + type: string + minLength: 1 + uiterlijkeEinddatumAfdoening__lt: + title: Uiterlijkeeinddatumafdoening lt + description: De laatste datum waarop volgens wet- en regelgeving de zaak + afgerond dient te zijn. + type: string + minLength: 1 + rol__betrokkeneType: + title: Rol betrokkenetype + description: |- + Type van de `betrokkene`. + + Uitleg bij mogelijke waarden: + + * `natuurlijk_persoon` - Natuurlijk persoon + * `niet_natuurlijk_persoon` - Niet-natuurlijk persoon + * `vestiging` - Vestiging + * `organisatorische_eenheid` - Organisatorische eenheid + * `medewerker` - Medewerker + type: string + enum: + - natuurlijk_persoon + - niet_natuurlijk_persoon + - vestiging + - organisatorische_eenheid + - medewerker + rol__betrokkene: + title: Rol betrokkene + description: URL-referentie naar een betrokkene gerelateerd aan de ZAAK. + type: string + minLength: 1 + rol__omschrijvingGeneriek: + title: Rol omschrijvinggeneriek + description: |- + Algemeen gehanteerde benaming van de aard van de ROL, afgeleid uit het ROLTYPE. + + Uitleg bij mogelijke waarden: + + * `adviseur` - Adviseur + * `behandelaar` - Behandelaar + * `belanghebbende` - Belanghebbende + * `beslisser` - Beslisser + * `initiator` - Initiator + * `klantcontacter` - Klantcontacter + * `zaakcoordinator` - Zaakcoördinator + * `mede_initiator` - Mede-initiator + type: string + enum: + - adviseur + - behandelaar + - belanghebbende + - beslisser + - initiator + - klantcontacter + - zaakcoordinator + - mede_initiator + maximaleVertrouwelijkheidaanduiding: + title: Maximalevertrouwelijkheidaanduiding + description: |- + Zaken met een vertrouwelijkheidaanduiding die beperkter is dan de aangegeven aanduiding worden uit de resultaten gefiltered. + + Uitleg bij mogelijke waarden: + + * `openbaar` - Openbaar + * `beperkt_openbaar` - Beperkt openbaar + * `intern` - Intern + * `zaakvertrouwelijk` - Zaakvertrouwelijk + * `vertrouwelijk` - Vertrouwelijk + * `confidentieel` - Confidentieel + * `geheim` - Geheim + * `zeer_geheim` - Zeer geheim + type: string + enum: + - openbaar + - beperkt_openbaar + - intern + - zaakvertrouwelijk + - vertrouwelijk + - confidentieel + - geheim + - zeer_geheim + rol__betrokkeneIdentificatie__natuurlijkPersoon__inpBsn: + title: Rol betrokkeneidentificatie natuurlijkpersoon inpbsn + description: Het burgerservicenummer, bedoeld in artikel 1.1 van de Wet + algemene bepalingen burgerservicenummer. + type: string + minLength: 1 + rol__betrokkeneIdentificatie__natuurlijkPersoon__anpIdentificatie: + title: Rol betrokkeneidentificatie natuurlijkpersoon anpidentificatie + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NATUURLIJK PERSOON + type: string + minLength: 1 + rol__betrokkeneIdentificatie__natuurlijkPersoon__inpA_nummer: + title: Rol betrokkeneidentificatie natuurlijkpersoon inpa nummer + description: Het administratienummer van de persoon, bedoeld in de Wet BRP + type: string + minLength: 1 + rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__innNnpId: + title: Rol betrokkeneidentificatie nietnatuurlijkpersoon innnnpid + description: Het door een kamer toegekend uniek nummer voor de INGESCHREVEN + NIET-NATUURLIJK PERSOON + type: string + minLength: 1 + rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__annIdentificatie: + title: Rol betrokkeneidentificatie nietnatuurlijkpersoon annidentificatie + description: Het door de gemeente uitgegeven unieke nummer voor een ANDER + NIET-NATUURLIJK PERSOON + type: string + minLength: 1 + rol__betrokkeneIdentificatie__vestiging__vestigingsNummer: + title: Rol betrokkeneidentificatie vestiging vestigingsnummer + description: Een korte unieke aanduiding van de Vestiging. + type: string + minLength: 1 + rol__betrokkeneIdentificatie__medewerker__identificatie: + title: Rol betrokkeneidentificatie medewerker identificatie + description: Een korte unieke aanduiding van de MEDEWERKER. + type: string + minLength: 1 + rol__betrokkeneIdentificatie__organisatorischeEenheid__identificatie: + title: Rol betrokkeneidentificatie organisatorischeeenheid identificatie + description: Een korte identificatie van de organisatorische eenheid. + type: string + minLength: 1 + ordering: + title: Ordering + description: |- + Het veld waarop de resultaten geordend worden. + + Uitleg bij mogelijke waarden: + + * `startdatum` - Startdatum + * `-startdatum` - Startdatum (descending) + * `einddatum` - Einddatum + * `-einddatum` - Einddatum (descending) + * `publicatiedatum` - Publicatiedatum + * `-publicatiedatum` - Publicatiedatum (descending) + * `archiefactiedatum` - Archiefactiedatum + * `-archiefactiedatum` - Archiefactiedatum (descending) + * `registratiedatum` - Registratiedatum + * `-registratiedatum` - Registratiedatum (descending) + * `identificatie` - Identificatie + * `-identificatie` - Identificatie (descending) + type: string + enum: + - startdatum + - -startdatum + - einddatum + - -einddatum + - publicatiedatum + - -publicatiedatum + - archiefactiedatum + - -archiefactiedatum + - registratiedatum + - -registratiedatum + - identificatie + - -identificatie + Wijzigingen: + type: object + properties: + oud: + title: Oud + description: Volledige JSON body van het object zoals dat bestond voordat + de actie heeft plaatsgevonden. + type: object + nieuw: + title: Nieuw + description: Volledige JSON body van het object na de actie. + type: object + AuditTrail: + required: + - bron + - actie + - resultaat + - hoofdObject + - resource + - resourceUrl + - resourceWeergave + - wijzigingen + type: object + properties: + uuid: + title: Uuid + description: Unieke identificatie van de audit regel. + type: string + format: uuid + bron: + title: Bron + description: |- + De naam van het component waar de wijziging in is gedaan. + + Uitleg bij mogelijke waarden: + + * `ac` - Autorisaties API + * `nrc` - Notificaties API + * `zrc` - Zaken API + * `ztc` - Catalogi API + * `drc` - Documenten API + * `brc` - Besluiten API + * `cmc` - Contactmomenten API + * `kc` - Klanten API + * `vrc` - Verzoeken API + type: string + enum: + - ac + - nrc + - zrc + - ztc + - drc + - brc + - cmc + - kc + - vrc + applicatieId: + title: Applicatie id + description: Unieke identificatie van de applicatie, binnen de organisatie. + type: string + maxLength: 100 + applicatieWeergave: + title: Applicatie weergave + description: Vriendelijke naam van de applicatie. + type: string + maxLength: 200 + gebruikersId: + title: Gebruikers id + description: Unieke identificatie van de gebruiker die binnen de organisatie + herleid kan worden naar een persoon. + type: string + maxLength: 255 + gebruikersWeergave: + title: Gebruikers weergave + description: Vriendelijke naam van de gebruiker. + type: string + maxLength: 255 + actie: + title: Actie + description: |- + De uitgevoerde handeling. + + De bekende waardes voor dit veld zijn hieronder aangegeven, maar andere waardes zijn ook toegestaan + + Uitleg bij mogelijke waarden: + + * `create` - Object aangemaakt + * `list` - Lijst van objecten opgehaald + * `retrieve` - Object opgehaald + * `destroy` - Object verwijderd + * `update` - Object bijgewerkt + * `partial_update` - Object deels bijgewerkt + type: string + maxLength: 50 + minLength: 1 + actieWeergave: + title: Actie weergave + description: Vriendelijke naam van de actie. + type: string + maxLength: 200 + resultaat: + title: Resultaat + description: HTTP status code van de API response van de uitgevoerde handeling. + type: integer + maximum: 599 + minimum: 100 + hoofdObject: + title: Hoofd object + description: De URL naar het hoofdobject van een component. + type: string + format: uri + maxLength: 1000 + minLength: 1 + resource: + title: Resource + description: Het type resource waarop de actie gebeurde. + type: string + maxLength: 50 + minLength: 1 + resourceUrl: + title: Resource url + description: De URL naar het object. + type: string + format: uri + maxLength: 1000 + minLength: 1 + toelichting: + title: Toelichting + description: Toelichting waarom de handeling is uitgevoerd. + type: string + resourceWeergave: + title: Resource weergave + description: Vriendelijke identificatie van het object. + type: string + maxLength: 200 + minLength: 1 + aanmaakdatum: + title: Aanmaakdatum + description: De datum waarop de handeling is gedaan. + type: string + format: date-time + readOnly: true + wijzigingen: + $ref: '#/components/schemas/Wijzigingen' + ZaakBesluit: + required: + - besluit + type: object + properties: + url: + title: Url + type: string + format: uri + readOnly: true + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + besluit: + title: Besluit + description: URL-referentie naar het BESLUIT (in de Besluiten API). + type: string + format: uri + maxLength: 1000 + minLength: 1 + ZaakEigenschap: + required: + - zaak + - eigenschap + - waarde + type: object + properties: + url: + title: Url + type: string + format: uri + readOnly: true + uuid: + title: Uuid + description: Unieke resource identifier (UUID4) + type: string + format: uuid + readOnly: true + zaak: + title: Zaak + type: string + format: uri + eigenschap: + title: Eigenschap + description: URL-referentie naar de EIGENSCHAP (in de Catalogi API). + type: string + format: uri + maxLength: 1000 + minLength: 1 + naam: + title: Naam + description: De naam van de EIGENSCHAP (overgenomen uit de Catalogi API). + type: string + readOnly: true + minLength: 1 + waarde: + title: Waarde + type: string + minLength: 1 diff --git a/src/openklant/components/legacy/contactmomenten/api/tests/test_objectcontactmoment.py b/src/openklant/components/legacy/contactmomenten/api/tests/test_objectcontactmoment.py index 53d2ce50..bb38bb8a 100644 --- a/src/openklant/components/legacy/contactmomenten/api/tests/test_objectcontactmoment.py +++ b/src/openklant/components/legacy/contactmomenten/api/tests/test_objectcontactmoment.py @@ -1,12 +1,16 @@ import uuid +from pathlib import Path from unittest.mock import patch +from django.conf import settings from django.test import override_settings +import requests_mock +from factory.django import FileField from rest_framework import status from rest_framework.test import APITestCase from vng_api_common.tests import JWTAuthMixin, get_validation_errors, reverse -from zds_client.tests.mocks import mock_client +from zgw_consumers.constants import APITypes from openklant.components.legacy.contactmomenten.models.constants import ObjectTypes from openklant.components.legacy.contactmomenten.models.contactmomenten import ( @@ -16,6 +20,7 @@ ContactMomentFactory, ObjectContactMomentFactory, ) +from openklant.components.tests.factories import ServiceFactory ZAAK = "http://example.com/api/v1/zaken/1" @@ -65,9 +70,24 @@ def test_read_objectcontactmoment(self): "zds_client.client.get_operation_url", return_value="/api/v1/zaakcontactmomenten", ) - @patch("zds_client.tests.mocks.MockClient.fetch_schema", return_value={}) @patch("vng_api_common.validators.obj_has_shape", return_value=True) def test_create_objectcontactmoment(self, *mocks): + ServiceFactory.create( + api_root="http://example.com/api/v1/zaken", + api_type=APITypes.zrc, + oas_file=FileField( + from_path=Path(settings.BASE_DIR) + / "src" + / "openklant" + / "components" + / "legacy" + / "contactmomenten" + / "api" + / "tests" + / "files" + / "zaken.yaml" + ), + ) contactmoment = ContactMomentFactory.create() contactmoment_url = reverse(contactmoment) list_url = reverse(ObjectContactMoment) @@ -76,16 +96,15 @@ def test_create_objectcontactmoment(self, *mocks): "objectType": ObjectTypes.zaak, "object": ZAAK, } - responses = { - "http://example.com/api/v1/zaakcontactmomenten": [ - { + with requests_mock.Mocker() as m: + m.get( + "http://example.com/api/v1/zaken/1", + json={ "url": f"https://example.com/api/v1/zaakcontactmomenten/{uuid.uuid4()}", "contactmoment": f"http://testserver/api/v1/contactmomenten/{uuid.uuid4()}", "zaak": ZAAK, - } - ] - } - with mock_client(responses): + }, + ) response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) @@ -103,9 +122,92 @@ def test_create_objectcontactmoment(self, *mocks): "zds_client.client.get_operation_url", return_value="/api/v1/zaakcontactmomenten", ) - @patch("zds_client.tests.mocks.MockClient.fetch_schema", return_value={}) + @patch("vng_api_common.validators.obj_has_shape", return_value=True) + def test_create_objectcontactmoment_without_service(self, *mocks): + contactmoment = ContactMomentFactory.create() + contactmoment_url = reverse(contactmoment) + list_url = reverse(ObjectContactMoment) + data = { + "contactmoment": contactmoment_url, + "objectType": ObjectTypes.zaak, + "object": ZAAK, + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + error = get_validation_errors(response, "nonFieldErrors") + + self.assertEqual(error["code"], "configuration-error") + + @override_settings( + LINK_FETCHER="vng_api_common.mocks.link_fetcher_200", + ) + @patch( + "zds_client.client.get_operation_url", + return_value="/api/v1/zaakcontactmomenten", + ) + @patch("vng_api_common.validators.obj_has_shape", return_value=True) + def test_create_objectcontactmoment_service_does_not_match(self, *mocks): + ServiceFactory.create( + api_root="http://example.com/api/v2/zaken", + api_type=APITypes.zrc, + oas_file=FileField( + from_path=Path(settings.BASE_DIR) + / "src" + / "openklant" + / "components" + / "legacy" + / "contactmomenten" + / "api" + / "tests" + / "files" + / "zaken.yaml" + ), + ) + contactmoment = ContactMomentFactory.create() + contactmoment_url = reverse(contactmoment) + list_url = reverse(ObjectContactMoment) + data = { + "contactmoment": contactmoment_url, + "objectType": ObjectTypes.zaak, + "object": ZAAK, + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + error = get_validation_errors(response, "nonFieldErrors") + + self.assertEqual(error["code"], "configuration-error") + + @override_settings( + LINK_FETCHER="vng_api_common.mocks.link_fetcher_200", + ) + @patch( + "zds_client.client.get_operation_url", + return_value="/api/v1/zaakcontactmomenten", + ) @patch("vng_api_common.validators.obj_has_shape", return_value=True) def test_create_objectcontactmoment_fail_no_remote_relation(self, *mocks): + ServiceFactory.create( + api_root="http://example.com/api/v1/zaken", + api_type=APITypes.zrc, + oas_file=FileField( + from_path=Path(settings.BASE_DIR) + / "src" + / "openklant" + / "components" + / "legacy" + / "contactmomenten" + / "api" + / "tests" + / "files" + / "zaken.yaml" + ), + ) contactmoment = ContactMomentFactory.create() contactmoment_url = reverse(contactmoment) list_url = reverse(ObjectContactMoment) @@ -114,8 +216,9 @@ def test_create_objectcontactmoment_fail_no_remote_relation(self, *mocks): "objectType": ObjectTypes.zaak, "object": ZAAK, } - responses = {"http://example.com/api/v1/zaakcontactmomenten": []} - with mock_client(responses): + with requests_mock.Mocker() as m: + m.get("http://example.com/api/v1/zaken/1", json={}) + response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) @@ -128,15 +231,30 @@ def test_create_objectcontactmoment_fail_no_remote_relation(self, *mocks): "zds_client.client.get_operation_url", return_value="/api/v1/zaakcontactmomenten", ) - @patch("zds_client.tests.mocks.MockClient.fetch_schema", return_value={}) def test_destroy_objectcontactmoment(self, *mocks): + ServiceFactory.create( + api_root="http://example.com/api/v1/zaken", + api_type=APITypes.zrc, + oas_file=FileField( + from_path=Path(settings.BASE_DIR) + / "src" + / "openklant" + / "components" + / "legacy" + / "contactmomenten" + / "api" + / "tests" + / "files" + / "zaken.yaml" + ), + ) objectcontactmoment = ObjectContactMomentFactory.create( object=ZAAK, object_type=ObjectTypes.zaak ) detail_url = reverse(objectcontactmoment) - responses = {"http://example.com/api/v1/zaakcontactmomenten": []} - with mock_client(responses): + with requests_mock.Mocker() as m: + m.get("http://example.com/api/v1/zaken/1", json={}) response = self.client.delete(detail_url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @@ -146,23 +264,88 @@ def test_destroy_objectcontactmoment(self, *mocks): "zds_client.client.get_operation_url", return_value="/api/v1/zaakcontactmomenten", ) - @patch("zds_client.tests.mocks.MockClient.fetch_schema", return_value={}) + def test_destroy_without_service(self, *mocks): + objectcontactmoment = ObjectContactMomentFactory.create( + object=ZAAK, object_type=ObjectTypes.zaak + ) + detail_url = reverse(objectcontactmoment) + + response = self.client.delete(detail_url) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + error = get_validation_errors(response, "nonFieldErrors") + + self.assertEqual(error["code"], "configuration-error") + + @patch( + "zds_client.client.get_operation_url", + return_value="/api/v1/zaakcontactmomenten", + ) + def test_destroyt_service_does_not_match(self, *mocks): + ServiceFactory.create( + api_root="http://example.com/api/v2/zaken", + api_type=APITypes.zrc, + oas_file=FileField( + from_path=Path(settings.BASE_DIR) + / "src" + / "openklant" + / "components" + / "legacy" + / "contactmomenten" + / "api" + / "tests" + / "files" + / "zaken.yaml" + ), + ) + objectcontactmoment = ObjectContactMomentFactory.create( + object=ZAAK, object_type=ObjectTypes.zaak + ) + detail_url = reverse(objectcontactmoment) + + response = self.client.delete(detail_url) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + error = get_validation_errors(response, "nonFieldErrors") + + self.assertEqual(error["code"], "configuration-error") + + @patch( + "zds_client.client.get_operation_url", + return_value="/api/v1/zaakcontactmomenten", + ) def test_destroy_fail_existing_relation(self, *mocks): + ServiceFactory.create( + api_root="http://example.com/api/v1/zaken", + api_type=APITypes.zrc, + oas_file=FileField( + from_path=Path(settings.BASE_DIR) + / "src" + / "openklant" + / "components" + / "legacy" + / "contactmomenten" + / "api" + / "tests" + / "files" + / "zaken.yaml" + ), + ) objectcontactmoment = ObjectContactMomentFactory.create( object=ZAAK, object_type=ObjectTypes.zaak ) detail_url = reverse(objectcontactmoment) - responses = { - "http://example.com/api/v1/zaakcontactmomenten": [ - { + with requests_mock.Mocker() as m: + m.get( + "http://example.com/api/v1/zaken/1", + json={ "url": f"https://example.com/api/v1/zaakcontactmomenten/{uuid.uuid4()}", "contactmoment": f"http://testserver/api/v1/contactmomenten/{uuid.uuid4()}", "zaak": ZAAK, - } - ] - } - - with mock_client(responses): + }, + ) response = self.client.delete(detail_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) diff --git a/src/openklant/components/legacy/contactmomenten/api/urls.py b/src/openklant/components/legacy/contactmomenten/api/urls.py index f60ac3a7..8538d595 100644 --- a/src/openklant/components/legacy/contactmomenten/api/urls.py +++ b/src/openklant/components/legacy/contactmomenten/api/urls.py @@ -1,6 +1,5 @@ from django.conf import settings -from django.conf.urls import url -from django.urls import include, path +from django.urls import include, path, re_path from vng_api_common import routers from vng_api_common.schema import SchemaView as _SchemaView @@ -31,23 +30,23 @@ class SchemaView(_SchemaView): # TODO: the EndpointEnumerator seems to choke on path and re_path urlpatterns = [ - url( + re_path( r"^v(?P\d+)/", include( [ # API documentation - url( + re_path( r"^schema/openapi(?P\.json|\.yaml)$", SchemaView.without_ui(cache_timeout=None), name="schema-json-contactmomenten", ), - url( + re_path( r"^schema/$", SchemaView.with_ui("redoc", cache_timeout=None), name="schema-redoc-contactmomenten", ), # actual API - url(r"^", include(router.urls)), + re_path(r"^", include(router.urls)), # should not be picked up by drf-yasg path("", router.APIRootView.as_view(), name="api-root-contactmomenten"), path("", include("vng_api_common.api.urls")), diff --git a/src/openklant/components/legacy/contactmomenten/api/validators.py b/src/openklant/components/legacy/contactmomenten/api/validators.py index d8062763..85cf8ebc 100644 --- a/src/openklant/components/legacy/contactmomenten/api/validators.py +++ b/src/openklant/components/legacy/contactmomenten/api/validators.py @@ -1,21 +1,16 @@ from collections import OrderedDict -from django.conf import settings -from django.utils.module_loading import import_string from django.utils.translation import gettext_lazy as _ -from rest_framework import exceptions, serializers -from vng_api_common.models import APICredential -from vng_api_common.validators import ResourceValidator +from rest_framework import serializers from zds_client import ClientError +from zgw_consumers.constants import APITypes +from zgw_consumers.models import Service from openklant.components.legacy.contactmomenten.models.contactmomenten import ( ObjectContactMoment, ) -from .auth import get_auth -from .utils import get_absolute_url - class ObjectContactMomentDestroyValidator: message = _( @@ -26,33 +21,30 @@ class ObjectContactMomentDestroyValidator: def __call__(self, objectklantinteractie: ObjectContactMoment): object_url = objectklantinteractie.object - klantinteractie_uuid = getattr(objectklantinteractie, self.resource_name).uuid - klantinteractie_url = get_absolute_url( - f"{self.resource_name}-detail", uuid=klantinteractie_uuid + for service in Service.objects.filter(api_type=APITypes.zrc): + if service.api_root in object_url: + client = service.get_client(object_url) + resource = f"{objectklantinteractie.object_type}{self.resource_name}" + try: + relations = client.retrieve( + resource, + url=object_url, + request_kwargs={"headers": {"Accept-Crs": "EPSG:4326"}}, + ) + except ClientError as exc: + raise serializers.ValidationError( + exc.args[0], code="relation-lookup-error" + ) from exc + + if len(relations) >= 1: + raise serializers.ValidationError(self.message, code=self.code) + + return True + + raise serializers.ValidationError( + _("No Zaaktype API configured"), code="configuration-error" ) - Client = import_string(settings.ZDS_CLIENT_CLASS) - client = Client.from_url(object_url) - client.auth = APICredential.get_auth(object_url) - - resource = f"{objectklantinteractie.object_type}{self.resource_name}" - - try: - relations = client.list( - resource, - query_params={ - objectklantinteractie.object_type: object_url, - f"{self.resource_name}": klantinteractie_url, - }, - ) - except ClientError as exc: - raise serializers.ValidationError( - exc.args[0], code="relation-lookup-error" - ) from exc - - if len(relations) >= 1: - raise serializers.ValidationError(self.message, code=self.code) - class ObjectContactMomentCreateValidator: """ @@ -66,45 +58,27 @@ class ObjectContactMomentCreateValidator: def __call__(self, attrs: OrderedDict): object_url = attrs["object"] object_type = attrs["object_type"] - klantinteractie_url = get_absolute_url( - f"{self.resource_name}-detail", uuid=attrs[self.resource_name].uuid - ) - # dynamic so that it can be mocked in tests easily - Client = import_string(settings.ZDS_CLIENT_CLASS) - client = Client.from_url(object_url) - client.auth = APICredential.get_auth(object_url) - - resource = f"{object_type}{self.resource_name}" - oas_schema = settings.ZRC_API_SPEC - - try: - ResourceValidator( - object_type.capitalize(), - oas_schema, - get_auth=get_auth, - headers={"Accept-Crs": "EPSG:4326"}, - )(object_url) - except exceptions.ValidationError as exc: - raise serializers.ValidationError( - {"object": exc.detail}, code=ResourceValidator.code - ) - - try: - relations = client.list( - resource, - query_params={ - object_type: object_url, - f"{self.resource_name}": klantinteractie_url, - }, - ) - - except ClientError as exc: - raise serializers.ValidationError( - exc.args[0], code="relation-validation-error" - ) from exc - - if len(relations) == 0: - raise serializers.ValidationError( - self.message.format(object=object_type), code=self.code - ) + for service in Service.objects.filter(api_type=APITypes.zrc): + if service.api_root in object_url: + client = service.get_client(object_url) + resource = f"{object_type}{self.resource_name}" + try: + relations = client.retrieve( + resource, + url=object_url, + request_kwargs={"headers": {"Accept-Crs": "EPSG:4326"}}, + ) + except ClientError as exc: + raise serializers.ValidationError( + exc.args[0], code="relation-lookup-error" + ) from exc + + if len(relations) == 0: + raise serializers.ValidationError(self.message, code=self.code) + + return True + + raise serializers.ValidationError( + _("No Zaaktype API configured"), code="configuration-error" + ) diff --git a/src/openklant/components/legacy/contactmomenten/models/constants.py b/src/openklant/components/legacy/contactmomenten/models/constants.py index d2802530..800c994c 100644 --- a/src/openklant/components/legacy/contactmomenten/models/constants.py +++ b/src/openklant/components/legacy/contactmomenten/models/constants.py @@ -1,17 +1,16 @@ +from django.db.models import TextChoices from django.utils.translation import gettext_lazy as _ -from djchoices import ChoiceItem, DjangoChoices +class InitiatiefNemer(TextChoices): + gemeente = "gemeente", _("gemeente") + klant = "klant", _("klant") -class InitiatiefNemer(DjangoChoices): - gemeente = ChoiceItem("gemeente", _("gemeente")) - klant = ChoiceItem("klant", _("klant")) +class ObjectTypes(TextChoices): + zaak = "zaak", _("Zaak") -class ObjectTypes(DjangoChoices): - zaak = ChoiceItem("zaak", _("Zaak")) - -class Rol(DjangoChoices): - belanghebbende = ChoiceItem("belanghebbende", "Belanghebbende") - gesprekspartner = ChoiceItem("gesprekspartner", "Gesprekspartner") +class Rol(TextChoices): + belanghebbende = "belanghebbende", _("Belanghebbende") + gesprekspartner = "gesprekspartner", _("Gesprekspartner") diff --git a/src/openklant/components/legacy/klanten/api/urls.py b/src/openklant/components/legacy/klanten/api/urls.py index a75b3d4d..17fd9074 100644 --- a/src/openklant/components/legacy/klanten/api/urls.py +++ b/src/openklant/components/legacy/klanten/api/urls.py @@ -1,6 +1,5 @@ from django.conf import settings -from django.conf.urls import url -from django.urls import include, path +from django.urls import include, path, re_path from vng_api_common import routers from vng_api_common.schema import SchemaView as _SchemaView @@ -24,23 +23,23 @@ class SchemaView(_SchemaView): # TODO: the EndpointEnumerator seems to choke on path and re_path urlpatterns = [ - url( + re_path( r"^v(?P\d+)/", include( [ # API documentation - url( + re_path( r"^schema/openapi(?P\.json|\.yaml)$", SchemaView.without_ui(cache_timeout=None), name="schema-json-klanten", ), - url( + re_path( r"^schema/$", SchemaView.with_ui("redoc", cache_timeout=None), name="schema-redoc-klanten", ), # actual API - url(r"^", include(router.urls)), + re_path(r"^", include(router.urls)), # should not be picked up by drf-yasg path("", router.APIRootView.as_view(), name="api-root-klanten"), path("", include("vng_api_common.api.urls")), diff --git a/src/openklant/components/legacy/klanten/models/constants.py b/src/openklant/components/legacy/klanten/models/constants.py index 53152f2a..fd5b3c7a 100644 --- a/src/openklant/components/legacy/klanten/models/constants.py +++ b/src/openklant/components/legacy/klanten/models/constants.py @@ -1,73 +1,60 @@ +from django.db.models import TextChoices from django.utils.translation import gettext_lazy as _ -from djchoices import ChoiceItem, DjangoChoices +class GeslachtsAanduiding(TextChoices): + man = "m", _("Man") + vrouw = "v", _("Vrouw") + onbekend = "o", _("Onbekend") -class GeslachtsAanduiding(DjangoChoices): - man = ChoiceItem("m", _("Man")) - vrouw = ChoiceItem("v", _("Vrouw")) - onbekend = ChoiceItem("o", _("Onbekend")) - -class KlantType(DjangoChoices): - natuurlijk_persoon = ChoiceItem("natuurlijk_persoon", _("Natuurlijk persoon")) - niet_natuurlijk_persoon = ChoiceItem( - "niet_natuurlijk_persoon", _("Niet-natuurlijk persoon") - ) - vestiging = ChoiceItem("vestiging", _("Vestiging")) +class KlantType(TextChoices): + natuurlijk_persoon = "natuurlijk_persoon", _("Natuurlijk persoon") + niet_natuurlijk_persoon = "niet_natuurlijk_persoon", _("Niet-natuurlijk persoon") + vestiging = "vestiging", _("Vestiging") # TODO: Copied from Zaken API, move to common -class SoortRechtsvorm(DjangoChoices): - besloten_vennootschap = ChoiceItem( - "besloten_vennootschap", _("Besloten Vennootschap") - ) - cooperatie_europees_economische_samenwerking = ChoiceItem( +class SoortRechtsvorm(TextChoices): + besloten_vennootschap = "besloten_vennootschap", _("Besloten Vennootschap") + cooperatie_europees_economische_samenwerking = ( "cooperatie_europees_economische_samenwerking", _("Cooperatie, Europees Economische Samenwerking"), ) - europese_cooperatieve_vennootschap = ChoiceItem( - "europese_cooperatieve_venootschap", _("Europese Cooperatieve Venootschap") - ) - europese_naamloze_vennootschap = ChoiceItem( - "europese_naamloze_vennootschap", _("Europese Naamloze Vennootschap") + europese_cooperatieve_vennootschap = "europese_cooperatieve_venootschap", _( + "Europese Cooperatieve Venootschap" ) - kerkelijke_organisatie = ChoiceItem( - "kerkelijke_organisatie", _("Kerkelijke Organisatie") + europese_naamloze_vennootschap = "europese_naamloze_vennootschap", _( + "Europese Naamloze Vennootschap" ) - naamloze_vennootschap = ChoiceItem( - "naamloze_vennootschap", _("Naamloze Vennootschap") + kerkelijke_organisatie = "kerkelijke_organisatie", _("Kerkelijke Organisatie") + naamloze_vennootschap = "naamloze_vennootschap", _("Naamloze Vennootschap") + onderlinge_waarborg_maatschappij = "onderlinge_waarborg_maatschappij", _( + "Onderlinge Waarborg Maatschappij" ) - onderlinge_waarborg_maatschappij = ChoiceItem( - "onderlinge_waarborg_maatschappij", _("Onderlinge Waarborg Maatschappij") - ) - overig_privaatrechtelijke_rechtspersoon = ChoiceItem( + overig_privaatrechtelijke_rechtspersoon = ( "overig_privaatrechtelijke_rechtspersoon", _("Overig privaatrechtelijke rechtspersoon"), ) - stichting = ChoiceItem("stichting", _("Stichting")) - vereniging = ChoiceItem("vereniging", _("Vereniging")) - vereniging_van_eigenaars = ChoiceItem( - "vereniging_van_eigenaars", _("Vereniging van Eigenaars") - ) - publiekrechtelijke_rechtspersoon = ChoiceItem( - "publiekrechtelijke_rechtspersoon", _("Publiekrechtelijke Rechtspersoon") - ) - vennootschap_onder_firma = ChoiceItem( - "vennootschap_onder_firma", _("Vennootschap onder Firma") + stichting = "stichting", _("Stichting") + vereniging = "vereniging", _("Vereniging") + vereniging_van_eigenaars = "vereniging_van_eigenaars", _("Vereniging van Eigenaars") + publiekrechtelijke_rechtspersoon = "publiekrechtelijke_rechtspersoon", _( + "Publiekrechtelijke Rechtspersoon" ) - maatschap = ChoiceItem("maatschap", _("Maatschap")) - rederij = ChoiceItem("rederij", _("Rederij")) - commanditaire_vennootschap = ChoiceItem( - "commanditaire_vennootschap", _("Commanditaire vennootschap") + vennootschap_onder_firma = "vennootschap_onder_firma", _("Vennootschap onder Firma") + maatschap = "maatschap", _("Maatschap") + rederij = "rederij", _("Rederij") + commanditaire_vennootschap = "commanditaire_vennootschap", _( + "Commanditaire vennootschap" ) - kapitaalvennootschap_binnen_eer = ChoiceItem( - "kapitaalvennootschap_binnen_eer", _("Kapitaalvennootschap binnen EER") + kapitaalvennootschap_binnen_eer = "kapitaalvennootschap_binnen_eer", _( + "Kapitaalvennootschap binnen EER" ) - overige_buitenlandse_rechtspersoon_vennootschap = ChoiceItem( + overige_buitenlandse_rechtspersoon_vennootschap = ( "overige_buitenlandse_rechtspersoon_vennootschap", _("Overige buitenlandse rechtspersoon vennootschap"), ) - kapitaalvennootschap_buiten_eer = ChoiceItem( - "kapitaalvennootschap_buiten_eer", _("Kapitaalvennootschap buiten EER") + kapitaalvennootschap_buiten_eer = "kapitaalvennootschap_buiten_eer", _( + "Kapitaalvennootschap buiten EER" ) diff --git a/src/openklant/components/tests/__init__.py b/src/openklant/components/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/openklant/components/tests/factories.py b/src/openklant/components/tests/factories.py new file mode 100644 index 00000000..318db73b --- /dev/null +++ b/src/openklant/components/tests/factories.py @@ -0,0 +1,23 @@ +import factory +from zgw_consumers.models import Service + + +class UriPathFaker(factory.Faker): + def __init__(self, **kwargs): + super().__init__("uri_path", **kwargs) + + def generate(self, extra_kwargs=None): + uri_path = super().generate(extra_kwargs) + # faker generates them without trailing slash, but let's make sure this stays true + # zgw_consumers.Service normalizes api_root to append missing trailing slashes + assert not uri_path.endswith("/") + return f"{uri_path}/" + + +class ServiceFactory(factory.django.DjangoModelFactory): + label = factory.Sequence(lambda n: f"API-{n}") + api_root = UriPathFaker() # FIXME: this should be a fully qualified URL + + class Meta: + model = Service + django_get_or_create = ("api_root",) diff --git a/src/openklant/conf/base.py b/src/openklant/conf/base.py index 737f71f7..911ef5fb 100644 --- a/src/openklant/conf/base.py +++ b/src/openklant/conf/base.py @@ -1,3 +1,4 @@ +import datetime import os from django.urls import reverse_lazy @@ -5,7 +6,7 @@ import sentry_sdk from .api import * # noqa -from .utils import config, get_current_version, get_git_sha, get_sentry_integrations +from .includes.environ import config, get_sentry_integrations # Build paths inside the project, so further paths can be defined relative to # the code root. @@ -402,6 +403,28 @@ subpath = f"/{subpath}" SUBPATH = subpath +if "GIT_SHA" in os.environ: + GIT_SHA = config("GIT_SHA", "") +# in docker (build) context, there is no .git directory +elif os.path.exists(os.path.join(BASE_DIR, ".git")): + try: + import git + except ImportError: + GIT_SHA = None + else: + repo = git.Repo(search_parent_directories=True) + GIT_SHA = repo.head.object.hexsha +else: + GIT_SHA = None + +RELEASE = config("RELEASE", GIT_SHA) + +NUM_PROXIES = config( # TODO: this also is relevant for DRF settings if/when we have rate-limited endpoints + "NUM_PROXIES", + default=1, + cast=lambda val: int(val) if val is not None else None, +) + ############################## # # # 3RD PARTY LIBRARY SETTINGS # @@ -416,27 +439,26 @@ ADMIN_INDEX_SHOW_REMAINING_APPS_TO_SUPERUSERS = True # -# DJANGO-AXES (4.0+) +# DJANGO-AXES # AXES_CACHE = "axes" # refers to CACHES setting -# The number of login attempts allowed before a record is created for the -# failed logins. Default: 3 -AXES_FAILURE_LIMIT = 10 -# If set, defines a period of inactivity after which old failed login attempts -# will be forgotten. Can be set to a python timedelta object or an integer. If -# an integer, will be interpreted as a number of hours. Default: None -AXES_COOLOFF_TIME = 1 -# If True only locks based on user id and never locks by IP if attempts limit -# exceed, otherwise utilize the existing IP and user locking logic Default: -# False -AXES_ONLY_USER_FAILURES = True -# If set, specifies a template to render when a user is locked out. Template -# receives cooloff_time and failure_limit as context variables. Default: None -AXES_LOCKOUT_TEMPLATE = "account_blocked.html" -AXES_USE_USER_AGENT = True # Default: False -AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP = True # Default: False -AXES_BEHIND_REVERSE_PROXY = IS_HTTPS - +AXES_FAILURE_LIMIT = 5 # Default: 3 +AXES_LOCK_OUT_AT_FAILURE = True # Default: True +AXES_USE_USER_AGENT = False # Default: False +AXES_COOLOFF_TIME = datetime.timedelta(minutes=5) +# after testing, the REMOTE_ADDR does not appear to be included with nginx (so single +# reverse proxy) and the ipware detection didn't properly work. On K8s you typically have +# ingress (load balancer) and then an additional nginx container for private file serving, +# bringing the total of reverse proxies to 2 - meaning HTTP_X_FORWARDED_FOR basically +# looks like ``$realIp,$ingressIp``. -> to get to $realIp, there is only 1 extra reverse +# proxy included. +AXES_PROXY_COUNT = NUM_PROXIES - 1 if NUM_PROXIES else None +AXES_ONLY_USER_FAILURES = ( + False # Default: False (you might want to block on username rather than IP) +) +AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP = ( + False # Default: False (you might want to block on username and IP) +) # The default meta precedence order IPWARE_META_PRECEDENCE_ORDER = ( "HTTP_X_FORWARDED_FOR", @@ -452,24 +474,21 @@ ) # -# SENTRY - error monitoring +# RAVEN/SENTRY - error monitoring # SENTRY_DSN = config("SENTRY_DSN", None) -RELEASE = get_current_version() -GIT_SHA = get_git_sha() - -# Two factor auth -# LOGIN_URL = "two_factor:login" if SENTRY_DSN: SENTRY_CONFIG = { "dsn": SENTRY_DSN, + "release": RELEASE or "RELEASE not set", "environment": ENVIRONMENT, - "release": RELEASE, } sentry_sdk.init( - **SENTRY_CONFIG, integrations=get_sentry_integrations(), send_default_pii=True + **SENTRY_CONFIG, + integrations=get_sentry_integrations(), + send_default_pii=True, ) # Elastic APM diff --git a/src/openklant/conf/includes/__init__.py b/src/openklant/conf/includes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/openklant/conf/includes/environ.py b/src/openklant/conf/includes/environ.py new file mode 100644 index 00000000..3a8db7ac --- /dev/null +++ b/src/openklant/conf/includes/environ.py @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: EUPL-1.2 +# Copyright (C) 2019 - 2020 Dimpact +from decouple import Csv, config as _config, undefined +from sentry_sdk.integrations import DidNotEnable, django, redis + + +def config(option: str, default=undefined, *args, **kwargs): + if "split" in kwargs: + kwargs.pop("split") + kwargs["cast"] = Csv() + if default == []: + default = "" + + if default is not undefined and default is not None: + kwargs.setdefault("cast", type(default)) + return _config(option, default=default, *args, **kwargs) + + +def get_sentry_integrations() -> list: + """ + Determine which Sentry SDK integrations to enable. + """ + default = [ + django.DjangoIntegration(), + redis.RedisIntegration(), + ] + extra = [] + + try: + from sentry_sdk.integrations import celery + except DidNotEnable: # happens if the celery import fails by the integration + pass + else: + extra.append(celery.CeleryIntegration()) + + return [*default, *extra] diff --git a/src/openklant/conf/production.py b/src/openklant/conf/production.py index b7f45e38..bd47812b 100644 --- a/src/openklant/conf/production.py +++ b/src/openklant/conf/production.py @@ -28,8 +28,6 @@ # collectstatic management command. STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage" -# Production logging facility. - # Production logging facility. handlers = ["console"] if LOG_STDOUT else ["django"] diff --git a/src/openklant/conf/utils.py b/src/openklant/conf/utils.py deleted file mode 100644 index 8b02085e..00000000 --- a/src/openklant/conf/utils.py +++ /dev/null @@ -1,119 +0,0 @@ -import logging -import os -from shutil import which -from subprocess import CalledProcessError, check_output - -from django.conf import settings - -from decouple import Csv, config as _config, undefined -from sentry_sdk.integrations import DidNotEnable, django, redis - -logger = logging.getLogger(__name__) - - -def config(option: str, default=undefined, *args, **kwargs): - """ - Pull a config parameter from the environment. - - Read the config variable ``option``. If it's optional, use the ``default`` value. - Input is automatically cast to the correct type, where the type is derived from the - default value if possible. - - Pass ``split=True`` to split the comma-separated input into a list. - """ - if "split" in kwargs: - kwargs.pop("split") - kwargs["cast"] = Csv() - - if default is not undefined and default is not None: - kwargs.setdefault("cast", type(default)) - return _config(option, default=default, *args, **kwargs) - - -def get_sentry_integrations() -> list: - """ - Determine which Sentry SDK integrations to enable. - """ - default = [ - django.DjangoIntegration(), - redis.RedisIntegration(), - ] - extra = [] - - try: - from sentry_sdk.integrations import celery - except DidNotEnable: # happens if the celery import fails by the integration - pass - else: - extra.append(celery.CeleryIntegration()) - - return [*default, *extra] - - -def _get_version_from_file(): - """ - Returns a commit hash from the project's .git/ dir if it exists - """ - heads_dir = os.path.join(settings.BASE_DIR, ".git", "refs", "heads") - - try: - heads = os.listdir(heads_dir) - except FileNotFoundError: - logging.warning("Unable to read commit hash from git files") - return "" - - for filename in ("master", "main", "develop"): - if filename in heads: - try: - with open(os.path.join(heads_dir, filename)) as file: - return file.read().strip() - except OSError: - logging.warning("Unable to read commit hash from file") - - return "" - - -def _get_version_from_git(): - """ - Returns the current tag or commit hash supplied by git - """ - try: - tags = check_output( - ["git", "tag", "--points-at", "HEAD"], universal_newlines=True - ) - except CalledProcessError: - logger.warning("Unable to list tags") - tags = None - - if tags: - return next(version for version in tags.splitlines()) - - try: - commit = check_output(["git", "rev-parse", "HEAD"], universal_newlines=True) - except CalledProcessError: - logger.warning("Unable to list current commit hash") - commit = None - - return commit or "" - - -def get_current_version(): - version = config("VERSION_TAG", default=None) - - if version: - return version - elif which("git"): - return _get_version_from_git() - - return _get_version_from_file() - - -def get_git_sha(): - """ - Returns the current git commit hash - """ - try: - return check_output(["git", "rev-parse", "HEAD"], universal_newlines=True) - except CalledProcessError: - logger.warning("Unable to list current commit hash") - return None diff --git a/src/openklant/fixtures/default_admin_index.json b/src/openklant/fixtures/default_admin_index.json index 873cfd0d..a8d38a1a 100644 --- a/src/openklant/fixtures/default_admin_index.json +++ b/src/openklant/fixtures/default_admin_index.json @@ -1,208 +1,244 @@ [ - { - "model": "admin_index.appgroup", - "pk": 1, - "fields": { - "order": 2, - "name": "Klantinteracties", - "slug": "klantinteracties", - "models": [ - [ - "klantinteracties", - "partij" - ], - [ - "klantinteracties", - "klantcontact" - ], - [ - "klantinteracties", - "actor" - ], - [ - "klantinteracties", - "internetaak" - ] +{ + "model": "admin_index.appgroup", + "fields": { + "order": 3, + "translations": { + "en": "Customer interactions", + "nl": "Klantinteracties" + }, + "name": "Klantinteracties", + "slug": "klantinteracties", + "models": [ + [ + "klantinteracties", + "actor" + ], + [ + "klantinteracties", + "internetaak" + ], + [ + "klantinteracties", + "klantcontact" + ], + [ + "klantinteracties", + "partij" ] - } - }, - { - "model": "admin_index.appgroup", - "pk": 2, - "fields": { - "order": 3, - "name": "Configuratie", - "slug": "configuratie", - "models": [ - [ - "admin_index", - "appgroup" - ], - [ - "authorizations", - "authorizationsconfig" - ], - [ - "notifications", - "notificationsconfig" - ], - [ - "notifications_api_common", - "notificationsconfig" - ], - [ - "sites", - "site" - ] + ] + } +}, +{ + "model": "admin_index.appgroup", + "fields": { + "order": 4, + "translations": { + "en": "Configuration", + "nl": "Configuratie" + }, + "name": "Configuratie", + "slug": "configuratie", + "models": [ + [ + "admin_index", + "appgroup" + ], + [ + "authorizations", + "authorizationsconfig" + ], + [ + "notifications", + "notificationsconfig" + ], + [ + "notifications_api_common", + "notificationsconfig" + ], + [ + "simple_certmanager", + "certificate" + ], + [ + "sites", + "site" + ], + [ + "zgw_consumers", + "certificate" + ], + [ + "zgw_consumers", + "nlxconfig" + ], + [ + "zgw_consumers", + "service" ] - } - }, - { - "model": "admin_index.appgroup", - "pk": 3, - "fields": { - "order": 4, - "name": "Notificaties", - "slug": "notificaties", - "models": [ - [ - "notifications", - "subscription" - ], - [ - "notifications_api_common", - "subscription" - ] + ] + } +}, +{ + "model": "admin_index.appgroup", + "fields": { + "order": 5, + "translations": { + "en": "Notifications", + "nl": "Notificaties" + }, + "name": "Notificaties", + "slug": "notificaties", + "models": [ + [ + "notifications", + "subscription" + ], + [ + "notifications_api_common", + "subscription" ] - } - }, - { - "model": "admin_index.appgroup", - "pk": 4, - "fields": { - "order": 1, - "name": "Accounts", - "slug": "accounts", - "models": [ - [ - "accounts", - "user" - ], - [ - "auth", - "group" - ], - [ - "mozilla_django_oidc_db", - "openidconnectconfig" - ] + ] + } +}, +{ + "model": "admin_index.appgroup", + "fields": { + "order": 1, + "translations": { + "en": "Accounts", + "nl": "Accounts" + }, + "name": "Accounts", + "slug": "accounts", + "models": [ + [ + "accounts", + "user" + ], + [ + "auth", + "group" + ], + [ + "mozilla_django_oidc_db", + "openidconnectconfig" ] - } - }, - { - "model": "admin_index.appgroup", - "pk": 5, - "fields": { - "order": 2, - "name": "API autorisaties", - "slug": "api-autorisaties", - "models": [ - [ - "authorizations", - "applicatie" - ], - [ - "authorizations", - "autorisatie" - ], - [ - "vng_api_common", - "apicredential" - ], - [ - "vng_api_common", - "jwtsecret" - ] + ] + } +}, +{ + "model": "admin_index.appgroup", + "fields": { + "order": 2, + "translations": { + "en": "API authorizations", + "nl": "API autorisaties" + }, + "name": "API autorisaties", + "slug": "api-autorisaties", + "models": [ + [ + "authorizations", + "applicatie" + ], + [ + "authorizations", + "autorisatie" + ], + [ + "vng_api_common", + "apicredential" + ], + [ + "vng_api_common", + "jwtsecret" ] - } - }, - { - "model": "admin_index.appgroup", - "pk": 6, - "fields": { - "order": 5, - "name": "Logging", - "slug": "logging", - "models": [ - [ - "audittrails", - "audittrail" - ], - [ - "axes", - "accessattempt" - ], - [ - "axes", - "accesslog" - ] + ] + } +}, +{ + "model": "admin_index.appgroup", + "fields": { + "order": 6, + "translations": { + "en": "Logging", + "nl": "Logging" + }, + "name": "Logging", + "slug": "logging", + "models": [ + [ + "audittrails", + "audittrail" + ], + [ + "axes", + "accessattempt" + ], + [ + "axes", + "accesslog" ] - } - }, - { - "model": "admin_index.appgroup", - "pk": 7, - "fields": { - "order": 6, - "name": "Legacy", - "slug": "legacy", - "models": [ - [ - "klanten", - "klant" - ], - [ - "klanten", - "klantadres" - ], - [ - "klanten", - "natuurlijkpersoon" - ], - [ - "klanten", - "nietnatuurlijkpersoon" - ], - [ - "klanten", - "subverblijfbuitenland" - ], - [ - "klanten", - "verblijfsadres" - ], - [ - "klanten", - "vestiging" - ], - - [ - "contactmomenten", - "contactmoment" - ], - [ - "contactmomenten", - "klantcontactmoment" - ], - [ - "contactmomenten", - "medewerker" - ], - [ - "contactmomenten", - "objectcontactmoment" - ] + ] + } +}, +{ + "model": "admin_index.appgroup", + "fields": { + "order": 7, + "translations": { + "en": "Legacy", + "nl": "Legacy" + }, + "name": "Legacy", + "slug": "legacy", + "models": [ + [ + "contactmomenten", + "contactmoment" + ], + [ + "contactmomenten", + "klantcontactmoment" + ], + [ + "contactmomenten", + "medewerker" + ], + [ + "contactmomenten", + "objectcontactmoment" + ], + [ + "klanten", + "klant" + ], + [ + "klanten", + "klantadres" + ], + [ + "klanten", + "natuurlijkpersoon" + ], + [ + "klanten", + "nietnatuurlijkpersoon" + ], + [ + "klanten", + "subverblijfbuitenland" + ], + [ + "klanten", + "verblijfsadres" + ], + [ + "klanten", + "vestiging" ] - } + ] } +} ] diff --git a/src/openklant/tests/api_strategy/test_error_format.py b/src/openklant/tests/api_strategy/test_error_format.py index 91aaea99..b147c683 100644 --- a/src/openklant/tests/api_strategy/test_error_format.py +++ b/src/openklant/tests/api_strategy/test_error_format.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.test import APIRequestFactory, APITestCase diff --git a/src/openklant/utils/tests/test_version.py b/src/openklant/utils/tests/test_version.py index 501d9234..41e1f78d 100644 --- a/src/openklant/utils/tests/test_version.py +++ b/src/openklant/utils/tests/test_version.py @@ -1,118 +1,9 @@ -from subprocess import CalledProcessError from unittest import skipIf -from unittest.mock import mock_open, patch from django.conf import settings -from django.test import SimpleTestCase, TestCase +from django.test import SimpleTestCase from django.utils.module_loading import import_string -from openklant.conf.utils import get_current_version - - -class VersionTestCase(TestCase): - def setUp(self): - patched_subprocess = patch("openklant.conf.utils.check_output") - self.mocked_subprocess = patched_subprocess.start() - - patched_which = patch("openklant.conf.utils.which") - self.mocked_which = patched_which.start() - - @patch.dict("os.environ", {"VERSION_TAG": "foobar"}) - def test_version_tag_set(self): - self.assertEqual(get_current_version(), "foobar") - - -@patch.dict("os.environ", {"VERSION_TAG": ""}) -class GitVersionTestCase(VersionTestCase): - def setUp(self): - super().setUp() - - self.mocked_which.return_value = ( - True # assume git is installed for this testcase - ) - - def tearDown(self): - patch.stopall() - - def test_tagged_commit(self): - self.mocked_subprocess.return_value = "v1.2.4" - - self.assertEqual(get_current_version(), "v1.2.4") - - def test_multiple_tags(self): - self.mocked_subprocess.return_value = "v5.1.1\nv3.4.1\nv1.2.2\n" - - self.assertEqual(get_current_version(), "v5.1.1") - - def test_tag_error(self): - self.mocked_subprocess.side_effect = ( - CalledProcessError(1, "/bin/false"), - "c4a364ccce8b99105b8d371100918645559174b1", - ) - - self.assertEqual( - get_current_version(), "c4a364ccce8b99105b8d371100918645559174b1" - ) - - def test_tag_and_commit_error(self): - self.mocked_subprocess.side_effect = ( - CalledProcessError(1, "/bin/false"), - CalledProcessError(1, "/bin/false"), - ) - - self.assertEqual(get_current_version(), "") - - def test_commit_hash(self): - self.mocked_subprocess.side_effect = ( - "", - "c4a364ccce8b99105b8d371100918645559174b1", - ) - - self.assertEqual( - get_current_version(), "c4a364ccce8b99105b8d371100918645559174b1" - ) - - def test_no_tag_or_commit(self): - self.mocked_subprocess.side_effect = ( - "", - "", - ) - - self.assertEqual(get_current_version(), "") - - -@patch.dict("os.environ", {"VERSION_TAG": ""}) -class FileVersionTestCase(VersionTestCase): - def setUp(self): - super().setUp() - - # assume git is not installed for this testcase - self.mocked_which.return_value = False - - patched_listdir = patch("openklant.conf.utils.os.listdir") - self.mocked_listdir = patched_listdir.start() - - @patch("builtins.open", new_callable=mock_open, read_data="commit-hash") - def test_simple(self, mock_file): - self.mocked_listdir.return_value = ("master", "main", "foo") - - self.assertEqual(get_current_version(), "commit-hash") - - def test_non_existing_dir(self): - self.mocked_listdir.side_effect = FileNotFoundError - - self.assertEqual(get_current_version(), "") - - def test_empty_dir(self): - self.mocked_listdir.return_value = [] - - self.assertEqual(get_current_version(), "") - - def test_head_not_found(self): - self.mocked_listdir.return_value = ("foo", "bar", "foobar") - - self.assertEqual(get_current_version(), "") - class BeatConfigTests(SimpleTestCase): @skipIf( diff --git a/src/openklant/utils/validators.py b/src/openklant/utils/validators.py index 69d0d005..d68fc19c 100644 --- a/src/openklant/utils/validators.py +++ b/src/openklant/utils/validators.py @@ -1,6 +1,6 @@ from django.core.exceptions import ValidationError from django.core.validators import RegexValidator -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.translation import gettext_lazy as _ @@ -41,8 +41,8 @@ def __call__(self, value): """ Validates that the input matches the regular expression. """ - if not self.regex.search(force_text(value)): - message = "{0}: {1}".format(self.message, force_text(value)) + if not self.regex.search(force_str(value)): + message = "{0}: {1}".format(self.message, force_str(value)) raise ValidationError(message, code=self.code)