This is an API to subscribe to notification on changes to persons. Should be used in combination with the Haal Centraal Proxy API.
This API has been developed to replace functionality of MakelaarsSuite (MKS). It allows users to follow updates on the BRP.
Requirements:
- Python >= 3.13
- Recommended: Docker/Docker Compose (or pyenv for local installs)
Run docker compose:
docker compose up
Navigate to localhost:8096
.
Create a virtualenv:
python3 -m venv venv
source venv/bin/activate
Install all packages in it:
pip install -U wheel pip
cd src/
make install # installs src/requirements_dev.txt
Start the Django application:
export PUB_JWKS="$(cat jwks_test.json)"
export DJANGO_DEBUG=true
./manage.py runserver localhost:8000
The following environment variables are useful for configuring a local development environment:
DJANGO_DEBUG
to enable debugging (true/false).LOG_LEVEL
log level for application code (default isDEBUG
for debug,INFO
otherwise).AUDIT_LOG_LEVEL
log level for audit messages (default isINFO
).DJANGO_LOG_LEVEL
log level for Django internals (default isINFO
).PUB_JWKS
allows to give publically readable JSON Web Key Sets in JSON format (good default:jq -c < src/jwks_test.json
).
Deployment:
ALLOWED_HOSTS
will limit which domain names can connect.AZURE_APPI_CONNECTION_STRING
Azure Insights configuration.AZURE_APPI_AUDIT_CONNECTION_STRING
Same, for a special audit logging.CLOUD_ENV=azure
will enable Azure-specific telemetry.STATIC_URL
defines the base URL for static files (e.g. to point to a CDN).OAUTH_JWKS_URL
point to a public JSON Web Key Set, e.g.https://login.microsoftonline.com/{tenant_uuid or 'common'}/discovery/v2.0/keys
.
Hardening deployment:
SESSION_COOKIE_SECURE
is already true in production.CSRF_COOKIE_SECURE
is already true in production.SECRET_KEY
is used for various encryption code.CORS_ALLOW_ALL_ORIGINS
can be true/false to allow all websites to connect.CORS_ALLOWED_ORIGINS
allows a list of origin URLs to use.CORS_ALLOWED_ORIGIN_REGEXES
supports a list of regex patterns fow allowed origins.
Run make
in the src
folder to have a help-overview of all common developer tasks.
The packages are managed with pip-compile.
To add a package, update the requirements.in
file and run make requirements
.
This will update the "lockfile" aka requirements.txt
that's used for pip installs.
To upgrade all packages, run make upgrade
, followed by make install
and make test
.
Or at once if you feel lucky: make upgrade install test
.
Consider using direnv for automatic activation of environment variables.
It automatically sources an .envrc
file when you enter the directory.
This file should contain all lines in the export VAR=value
format.
In a similar way, pyenv helps to install the exact Python version,
and will automatically activate the virtualenv when a .python-version
file is found:
pyenv install 3.13.1
pyenv virtualenv 3.13.1 brp-kennisgevingen-api
echo brp-kennisgevingen-api > .python-version