From 877ffe9bca220a113a43acbe386a26041731bfd0 Mon Sep 17 00:00:00 2001 From: bart-maykin Date: Fri, 10 Nov 2023 10:05:14 +0100 Subject: [PATCH] :sparkles: [#100] added reverse lookup fields --- .../api/filterset/klantcontacten.py | 162 + .../api/serializers/actoren.py | 10 +- .../api/serializers/digitaal_adres.py | 44 + .../api/serializers/internetaken.py | 67 +- .../api/serializers/klantcontacten.py | 558 +++- .../api/serializers/partijen.py | 219 +- .../api/tests/test_actoren.py | 12 +- .../api/tests/test_digitaal_adres.py | 174 + .../api/tests/test_filters.py | 210 ++ .../api/tests/test_internetaken.py | 161 + .../api/tests/test_klantcontacten.py | 846 ++++- .../api/tests/test_partijen.py | 201 +- .../components/klantinteracties/api/urls.py | 4 + .../klantinteracties/api/validators.py | 37 +- .../klantinteracties/api/viewsets/actoren.py | 45 +- .../api/viewsets/internetaken.py | 9 + .../api/viewsets/klantcontacten.py | 37 + .../migrations/0004_auto_20231110_0735.py | 40 + .../klantinteracties/models/actoren.py | 2 + .../klantinteracties/models/digitaal_adres.py | 9 + .../klantinteracties/models/klantcontacten.py | 8 - .../models/tests/factories/digitaal_adres.py | 4 + .../models/tests/factories/internetaken.py | 26 + .../models/tests/factories/klantcontacten.py | 24 +- .../components/klantinteracties/openapi.yaml | 2262 ++++++++++--- .../components/klantinteracties/resources.md | 24 + .../klantinteracties/swagger2.0.json | 2832 +++++++++++++---- 27 files changed, 6649 insertions(+), 1378 deletions(-) create mode 100644 src/openklant/components/klantinteracties/api/filterset/klantcontacten.py create mode 100644 src/openklant/components/klantinteracties/api/tests/test_digitaal_adres.py create mode 100644 src/openklant/components/klantinteracties/api/tests/test_filters.py create mode 100644 src/openklant/components/klantinteracties/api/tests/test_internetaken.py create mode 100644 src/openklant/components/klantinteracties/migrations/0004_auto_20231110_0735.py create mode 100644 src/openklant/components/klantinteracties/models/tests/factories/internetaken.py diff --git a/src/openklant/components/klantinteracties/api/filterset/klantcontacten.py b/src/openklant/components/klantinteracties/api/filterset/klantcontacten.py new file mode 100644 index 00000000..59dd0575 --- /dev/null +++ b/src/openklant/components/klantinteracties/api/filterset/klantcontacten.py @@ -0,0 +1,162 @@ +import uuid + +from django.utils.translation import gettext_lazy as _ + +from django_filters.rest_framework import FilterSet, filters + +from openklant.components.klantinteracties.models.klantcontacten import ( + Betrokkene, + Klantcontact, +) + + +class KlantcontactFilterSet(FilterSet): + had_betrokkene__url = filters.CharFilter( + help_text=_("Zoek klantcontract object op basis van het betrokkene url"), + method="filter_betrokkene_url", + ) + had_betrokkene__uuid = filters.CharFilter( + help_text=_("Zoek klantcontract object op basis van het betrokkene uuid"), + method="filter_betrokkene_uuid", + ) + inhoud = filters.CharFilter( + lookup_expr="icontains", + help_text=_("Zoek klantcontacten met specifieke tekst in inhoud"), + ) + onderwerp = filters.CharFilter( + lookup_expr="icontains", + help_text=_("Zoek klantcontacten met specifieke tekst in onderwerp"), + ) + + class Meta: + model = Klantcontact + fields = ( + "had_betrokkene__url", + "had_betrokkene__uuid", + "nummer", + "kanaal", + "inhoud", + "onderwerp", + ) + + def filter_betrokkene_uuid(self, queryset, name, value): + try: + betrokkene_uuid = uuid.UUID(value) + return queryset.filter(betrokkene__uuid=betrokkene_uuid) + except ValueError: + return queryset.none() + + def filter_betrokkene_url(self, queryset, name, value): + try: + url_uuid = uuid.UUID(value.split("/")[-1]) + return queryset.filter(betrokkene__uuid=url_uuid) + except ValueError: + return queryset.none() + + +class BetrokkeneFilterSet(FilterSet): + klantcontact__nummer = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het klantcontact nummer"), + method="filter_klantcontact_nummer", + ) + klantcontact__url = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het klantcontact url"), + method="filter_klantcontact_url", + ) + klantcontact__uuid = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het klantcontact uuid"), + method="filter_klantcontact_uuid", + ) + verstrektedigitaal_adres__adres = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het digitaaladres adres"), + method="filter_digitaaladres_adres", + ) + verstrektedigitaal_adres__url = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het digitaaladres url"), + method="filter_digitaaladres_url", + ) + verstrektedigitaal_adres__uuid = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het digitaaladres uuid"), + method="filter_digitaaladres_uuid", + ) + + was_partij__nummer = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het partij nummer"), + method="filter_partij_nummer", + ) + was_partij__url = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het partij url"), + method="filter_partij_url", + ) + was_partij__uuid = filters.CharFilter( + help_text=_("Zoek betrokkene object op basis van het partij uuid"), + method="filter_partij_uuid", + ) + + class Meta: + model = Betrokkene + fields = ( + "klantcontact__nummer", + "klantcontact__uuid", + "klantcontact__url", + "verstrektedigitaal_adres__adres", + "verstrektedigitaal_adres__uuid", + "verstrektedigitaal_adres__url", + "was_partij__nummer", + "was_partij__url", + "was_partij__uuid", + ) + + def filter_klantcontact_url(self, queryset, name, value): + try: + url_uuid = uuid.UUID(value.split("/")[-1]) + return queryset.filter(klantcontact__uuid=url_uuid) + except ValueError: + return queryset.none() + + def filter_klantcontact_uuid(self, queryset, name, value): + try: + klantcontact_uuid = uuid.UUID(value) + return queryset.filter(klantcontact__uuid=klantcontact_uuid) + except ValueError: + return queryset.none() + + def filter_klantcontact_nummer(self, queryset, name, value): + try: + return queryset.filter(klantcontact__nummer=value) + except ValueError: + return queryset.none() + + def filter_digitaaladres_adres(self, queryset, name, value): + return queryset.filter(digitaaladres__adres=value) + + def filter_digitaaladres_url(self, queryset, name, value): + try: + url_uuid = uuid.UUID(value.split("/")[-1]) + return queryset.filter(digitaaladres__uuid=url_uuid) + except ValueError: + return queryset.none() + + def filter_digitaaladres_uuid(self, queryset, name, value): + try: + digitaaladres_uuid = uuid.UUID(value) + return queryset.filter(digitaaladres__uuid=digitaaladres_uuid) + except ValueError: + return queryset.none() + + def filter_partij_nummer(self, queryset, name, value): + return queryset.filter(partij__nummer=value) + + def filter_partij_url(self, queryset, name, value): + try: + url_uuid = uuid.UUID(value.split("/")[-1]) + return queryset.filter(partij__uuid=url_uuid) + except ValueError: + return queryset.none() + + def filter_partij_uuid(self, queryset, name, value): + try: + partij_uuid = uuid.UUID(value) + return queryset.filter(partij__uuid=partij_uuid) + except ValueError: + return queryset.none() diff --git a/src/openklant/components/klantinteracties/api/serializers/actoren.py b/src/openklant/components/klantinteracties/api/serializers/actoren.py index ecf6394b..60b4bbaf 100644 --- a/src/openklant/components/klantinteracties/api/serializers/actoren.py +++ b/src/openklant/components/klantinteracties/api/serializers/actoren.py @@ -95,8 +95,9 @@ class Meta: @transaction.atomic def update(self, instance, validated_data): - if actor := validated_data.pop("actor", None): - validated_data["actor"] = Actor.objects.get(uuid=str(actor.get("uuid"))) + if "actor" in validated_data: + if actor := validated_data.pop("actor", None): + validated_data["actor"] = Actor.objects.get(uuid=str(actor.get("uuid"))) return super().update(instance, validated_data) @@ -136,8 +137,9 @@ class Meta: @transaction.atomic def update(self, instance, validated_data): - if actor := validated_data.pop("actor", None): - validated_data["actor"] = Actor.objects.get(uuid=str(actor.get("uuid"))) + if "actor" in validated_data: + if actor := validated_data.pop("actor", None): + validated_data["actor"] = Actor.objects.get(uuid=str(actor.get("uuid"))) return super().update(instance, validated_data) diff --git a/src/openklant/components/klantinteracties/api/serializers/digitaal_adres.py b/src/openklant/components/klantinteracties/api/serializers/digitaal_adres.py index bcfee19e..1be3dd81 100644 --- a/src/openklant/components/klantinteracties/api/serializers/digitaal_adres.py +++ b/src/openklant/components/klantinteracties/api/serializers/digitaal_adres.py @@ -1,3 +1,6 @@ +from django.db import transaction +from django.utils.translation import gettext_lazy as _ + from rest_framework import serializers from openklant.components.klantinteracties.api.validators import digitaal_adres_exists @@ -22,11 +25,25 @@ class Meta: class DigitaalAdresSerializer(serializers.HyperlinkedModelSerializer): + from openklant.components.klantinteracties.api.serializers.klantcontacten import ( + BetrokkeneForeignKeySerializer, + ) + + betrokkene = BetrokkeneForeignKeySerializer( + required=True, + allow_null=True, + help_text=_( + "Digitaal adres dat een betrokkene bij klantcontact verstrekte voor gebruik bij " + "opvolging van een klantcontact." + ), + ) + class Meta: model = DigitaalAdres fields = ( "uuid", "url", + "betrokkene", "adres", "soort_digitaal_adres", "omschrijving", @@ -39,3 +56,30 @@ class Meta: "help_text": "De unieke URL van dit digitaal adres binnen deze API.", }, } + + @transaction.atomic + def update(self, instance, validated_data): + from openklant.components.klantinteracties.models.klantcontacten import ( + Betrokkene, + ) + + if "betrokkene" in validated_data: + if betrokkene := validated_data.pop("betrokkene", None): + betrokkene = Betrokkene.objects.get(uuid=str(betrokkene.get("uuid"))) + + validated_data["betrokkene"] = betrokkene + + return super().update(instance, validated_data) + + @transaction.atomic + def create(self, validated_data): + from openklant.components.klantinteracties.models.klantcontacten import ( + Betrokkene, + ) + + if betrokkene := validated_data.pop("betrokkene", None): + validated_data["betrokkene"] = Betrokkene.objects.get( + uuid=str(betrokkene.get("uuid")) + ) + + return super().create(validated_data) diff --git a/src/openklant/components/klantinteracties/api/serializers/internetaken.py b/src/openklant/components/klantinteracties/api/serializers/internetaken.py index d57e950b..6c5f4bc2 100644 --- a/src/openklant/components/klantinteracties/api/serializers/internetaken.py +++ b/src/openklant/components/klantinteracties/api/serializers/internetaken.py @@ -1,3 +1,4 @@ +from django.db import transaction from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -8,7 +9,10 @@ from openklant.components.klantinteracties.api.serializers.klantcontacten import ( KlantcontactForeignKeySerializer, ) +from openklant.components.klantinteracties.api.validators import internetaak_exists +from openklant.components.klantinteracties.models.actoren import Actor from openklant.components.klantinteracties.models.internetaken import InterneTaak +from openklant.components.klantinteracties.models.klantcontacten import Klantcontact class InterneTaakForeignKeySerializer(serializers.HyperlinkedModelSerializer): @@ -19,7 +23,7 @@ class Meta: "url", ) extra_kwargs = { - "uuid": {"required": True}, + "uuid": {"required": True, "validators": [internetaak_exists]}, "url": { "view_name": "internetaak-detail", "lookup_field": "uuid", @@ -61,3 +65,64 @@ class Meta: "help_text": "De unieke URL van deze interne taak binnen deze API.", }, } + + @transaction.atomic + def create(self, validated_data): + actor_uuid = str(validated_data.pop("actor").get("uuid")) + klantcontact_uuid = str(validated_data.pop("klantcontact").get("uuid")) + + validated_data["actor"] = Actor.objects.get(uuid=actor_uuid) + validated_data["klantcontact"] = Klantcontact.objects.get( + uuid=klantcontact_uuid + ) + + return super().create(validated_data) + + @transaction.atomic + def update(self, instance, validated_data): + if "actor" in validated_data: + if actor := validated_data.pop("actor", None): + validated_data["actor"] = Actor.objects.get(uuid=str(actor.get("uuid"))) + + if "klantcontact" in validated_data: + if klantcontact := validated_data.pop("klantcontact", None): + validated_data["klantcontact"] = Klantcontact.objects.get( + uuid=str(klantcontact.get("uuid")) + ) + + return super().update(instance, validated_data) + + +class KlantcontactInterneTaakSerializer(serializers.HyperlinkedModelSerializer): + actor = ActorForeignKeySerializer( + required=True, + allow_null=False, + help_text=_("Actor die een interne taak toegewezen kreeg."), + ) + klantcontact = KlantcontactForeignKeySerializer( + read_only=True, + allow_null=False, + help_text=_("Klantcontact dat leidde tot een interne taak."), + ) + + class Meta: + model = InterneTaak + fields = ( + "uuid", + "url", + "nummer", + "gevraagde_handeling", + "actor", + "klantcontact", + "toelichting", + "status", + "toegewezen_op", + ) + extra_kwargs = { + "uuid": {"read_only": True}, + "url": { + "view_name": "internetaak-detail", + "lookup_field": "uuid", + "help_text": "De unieke URL van deze interne taak binnen deze API.", + }, + } diff --git a/src/openklant/components/klantinteracties/api/serializers/klantcontacten.py b/src/openklant/components/klantinteracties/api/serializers/klantcontacten.py index 559954ee..1cd038c3 100644 --- a/src/openklant/components/klantinteracties/api/serializers/klantcontacten.py +++ b/src/openklant/components/klantinteracties/api/serializers/klantcontacten.py @@ -7,21 +7,57 @@ from openklant.components.klantinteracties.api.serializers.actoren import ( ActorForeignKeySerializer, ) -from openklant.components.klantinteracties.api.serializers.digitaal_adres import ( - DigitaalAdresForeignKeySerializer, -) from openklant.components.klantinteracties.api.validators import ( betrokkene_exists, + bijlage_exists, klantcontact_exists, + onderwerpobject_exists, ) from openklant.components.klantinteracties.models.actoren import Actor -from openklant.components.klantinteracties.models.digitaal_adres import DigitaalAdres from openklant.components.klantinteracties.models.klantcontacten import ( Betrokkene, + Bijlage, Klantcontact, + Onderwerpobject, ) +class BetrokkeneForeignKeySerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Betrokkene + fields = ( + "uuid", + "url", + ) + extra_kwargs = { + "uuid": {"required": True, "validators": [betrokkene_exists]}, + "url": { + "view_name": "betrokkene-detail", + "lookup_field": "uuid", + "help_text": "De unieke URL van deze betrokkene binnen deze API.", + }, + } + + +class BezoekadresSerializer(GegevensGroepSerializer): + class Meta: + model = Betrokkene + gegevensgroep = "bezoekadres" + + +class CorrespondentieadresSerializer(GegevensGroepSerializer): + class Meta: + model = Betrokkene + gegevensgroep = "correspondentieadres" + ref_name = "betrokkene correspondentieadres" + + +class ContactnaamSerializer(GegevensGroepSerializer): + class Meta: + model = Betrokkene + gegevensgroep = "contactnaam" + + class KlantcontactForeignKeySerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Klantcontact @@ -39,19 +75,231 @@ class Meta: } +class BetrokkeneBaseSerializer( + NestedGegevensGroepMixin, serializers.HyperlinkedModelSerializer +): + from openklant.components.klantinteracties.api.serializers.partijen import ( + KlantcontactPartijSerializer, + ) + + partij = KlantcontactPartijSerializer( + required=True, + allow_null=True, + source="partij_set", + help_text=_("Betrokkene bij klantcontact die een partij was."), + many=True, + ) + bezoekadres = BezoekadresSerializer( + required=False, + allow_null=True, + help_text=_( + "Adres waarop de betrokkene bij klantcontact in naar aanleiding " + "van dat contact af te leggen bezoeken wil ontvangen. Dit mag " + "afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen." + ), + ) + correspondentieadres = CorrespondentieadresSerializer( + required=False, + allow_null=True, + help_text=_( + "Adres waarop de betrokkene bij klantcontact naar aanleiding van " + "dat contact te versturen post wil ontvangen. Dit mag afwijken van " + "voor de verstrekker eventueel in een basisregistratie bekende adressen." + ), + ) + contactnaam = ContactnaamSerializer( + required=False, + allow_null=True, + help_text=_( + "Naam die de betrokkene bij klantcontact tijdens vervolghandelingen naar " + "aanleiding van dat contact wil gebruiken. Deze mag afwijken van eventueel " + "in de Basisregistratie Personen (BRP) bekende naam van de betrokkene." + ), + ) + + class Meta: + model = Betrokkene + fields = ( + "uuid", + "url", + "partij", + "bezoekadres", + "correspondentieadres", + "contactnaam", + "rol", + "organisatienaam", + "initiator", + ) + extra_kwargs = { + "uuid": {"read_only": True}, + "url": { + "view_name": "betrokkene-detail", + "lookup_field": "uuid", + "help_text": "De unieke URL van deze betrokkene binnen deze API.", + }, + } + + # TODO: remove this code and create update suport for partij + def get_fields(self, *args, **kwargs): + fields = super(BetrokkeneBaseSerializer, self).get_fields(*args, **kwargs) + request = self.context.get("request", None) + if request and getattr(request, "method", None) in ["PUT", "PATCH"]: + fields["partij"].required = False + fields["partij"].read_only = True + return fields + + @transaction.atomic + def update(self, instance, validated_data): + if "klantcontact" in validated_data: + if klantcontact := validated_data.pop("klantcontact", None): + validated_data["klantcontact"] = Klantcontact.objects.get( + uuid=str(klantcontact.get("uuid")) + ) + + return super().update(instance, validated_data) + + @transaction.atomic + def create(self, validated_data): + from openklant.components.klantinteracties.api.serializers.partijen import ( + PartijSerializer, + ) + + klantcontact_uuid = str(validated_data.pop("klantcontact").get("uuid")) + partijen = validated_data.pop("partij_set") + + validated_data["klantcontact"] = Klantcontact.objects.get( + uuid=klantcontact_uuid + ) + + betrokkene = super().create(validated_data) + + if partijen: + linked_parijen = [] + for partij in partijen: + partij["betrokkene"] = {"uuid": betrokkene.uuid} + linked_parijen.append(partij) + + serializer = PartijSerializer( + data=linked_parijen, context=self.context, many=True + ) + serializer.is_valid(raise_exception=True) + serializer.save() + + return betrokkene + + +class BetrokkeneSerializer(BetrokkeneBaseSerializer): + klantcontact = KlantcontactForeignKeySerializer( + required=True, + allow_null=False, + help_text=_("Persoon of organisatie die betrokken was bij een klantcontact."), + ) + + class Meta(BetrokkeneBaseSerializer.Meta): + fields = BetrokkeneBaseSerializer.Meta.fields + ("klantcontact",) + + +class BetrokkeneKlantcontactSerializer(BetrokkeneBaseSerializer): + klantcontact = KlantcontactForeignKeySerializer( + read_only=True, + allow_null=False, + help_text=_("Persoon of organisatie die betrokken was bij een klantcontact."), + ) + + class Meta(BetrokkeneBaseSerializer.Meta): + fields = BetrokkeneBaseSerializer.Meta.fields + ("klantcontact",) + + +class OnderwerpobjectForeignKeySerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Onderwerpobject + fields = ( + "uuid", + "url", + ) + + extra_kwargs = { + "uuid": {"required": True, "validators": [onderwerpobject_exists]}, + "url": { + "view_name": "onderwerpobject-detail", + "lookup_field": "uuid", + "help_text": "De unieke URL van dit onderwerp object binnen deze API.", + }, + } + + +class BijlageForeignKeySerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Bijlage + fields = ( + "uuid", + "url", + ) + + extra_kwargs = { + "uuid": {"required": True, "validators": [bijlage_exists]}, + "url": { + "view_name": "bijlage-detail", + "lookup_field": "uuid", + "help_text": "De unieke URL van deze bijlage binnen deze API.", + }, + } + + class KlantcontactSerializer(serializers.HyperlinkedModelSerializer): + from openklant.components.klantinteracties.api.serializers.internetaken import ( + KlantcontactInterneTaakSerializer, + ) + actoren = ActorForeignKeySerializer( required=True, allow_null=False, help_text=_("Actor die bij een klantcontact betrokken was."), many=True, ) + ging_over_onderwerpobject = OnderwerpobjectForeignKeySerializer( + required=True, + allow_null=True, + source="onderwerpobject_set", + help_text=_("Onderwerpobject dat tijdens een klantcontact aan de orde was."), + many=True, + ) + omvatte_bijlagen = BijlageForeignKeySerializer( + required=True, + allow_null=True, + source="bijlage_set", + help_text=_( + "Bijlage die (een deel van) de inhoud van het klantcontact beschrijft." + ), + many=True, + ) + + # TODO: change to inline resource for update + had_betrokkene = BetrokkeneKlantcontactSerializer( + required=True, + allow_null=True, + source="betrokkene_set", + help_text=_("Persoon of organisatie die betrokken was bij een klantcontact."), + many=True, + ) + # TODO: change to inline resource for update + leide_tot_interne_taken = KlantcontactInterneTaakSerializer( + required=True, + allow_null=True, + source="internetaak_set", + help_text=_("Klantcontact dat leidde tot een interne taak."), + many=True, + ) class Meta: model = Klantcontact fields = ( "uuid", "url", + "ging_over_onderwerpobject", + "omvatte_bijlagen", + "had_betrokkene", + "leide_tot_interne_taken", "nummer", "kanaal", "onderwerp", @@ -71,155 +319,285 @@ class Meta: }, } + # TODO: remove this code and create update suport for interne taken + def get_fields(self, *args, **kwargs): + fields = super(KlantcontactSerializer, self).get_fields(*args, **kwargs) + request = self.context.get("request", None) + if request and getattr(request, "method", None) in ["PUT", "PATCH"]: + fields["leide_tot_interne_taken"].required = False + fields["leide_tot_interne_taken"].read_only = True + + fields["had_betrokkene"].required = False + fields["had_betrokkene"].read_only = True + return fields + @transaction.atomic def update(self, instance, validated_data): - actoren = [ - str(actor.get("uuid")) - for actor in validated_data.pop( - "actoren", instance.actoren.all().values("uuid") - ) - ] - validated_data["actoren"] = Actor.objects.filter(uuid__in=actoren) + if "actoren" in validated_data: + actoren = [ + str(actor.get("uuid")) for actor in validated_data.pop("actoren") + ] + validated_data["actoren"] = Actor.objects.filter(uuid__in=actoren) + + if "bijlage_set" in validated_data: + existing_bijlagen = instance.bijlage_set.all() + bijlagen_uuids = [ + bijlage["uuid"] for bijlage in validated_data.pop("bijlage_set") + ] + + # unset relation of bijlage that weren't given with the update + for bijlage in existing_bijlagen: + if bijlage.uuid not in bijlagen_uuids: + bijlage.klantcontact = None + bijlage.save() + + # create relation between bijlage and klantcontact of new entries + for bijlage_uuid in bijlagen_uuids: + if bijlage_uuid not in existing_bijlagen.values_list("uuid", flat=True): + bijlage = Bijlage.objects.get(uuid=bijlage_uuid) + bijlage.klantcontact = instance + bijlage.save() + + if "onderwerpobject_set" in validated_data: + existing_onderwerpobjecten = instance.onderwerpobject_set.all() + onderwerpobjecten_uuids = [ + onderwerpobject["uuid"] + for onderwerpobject in validated_data.pop("onderwerpobject_set") + ] + + # unset relation of onderwerpobject that weren't given with the update + for onderwerpobject in existing_onderwerpobjecten: + if onderwerpobject.uuid not in onderwerpobjecten_uuids: + onderwerpobject.klantcontact = None + onderwerpobject.save() + + # create relation between onderwerpobject and klantcontact of new entries + for onderwerpobject_uuid in onderwerpobjecten_uuids: + if onderwerpobject_uuid not in existing_onderwerpobjecten.values_list( + "uuid", flat=True + ): + onderwerpobject = Onderwerpobject.objects.get( + uuid=onderwerpobject_uuid + ) + onderwerpobject.klantcontact = instance + onderwerpobject.save() return super().update(instance, validated_data) @transaction.atomic def create(self, validated_data): + from openklant.components.klantinteracties.api.serializers.internetaken import ( + InterneTaakSerializer, + ) + + betrokkenen = validated_data.pop("betrokkene_set") + internetaken = validated_data.pop("internetaak_set") + bijlagen = validated_data.pop("bijlage_set") + onderwerpobjecten = validated_data.pop("onderwerpobject_set") + actoren = [str(actor["uuid"]) for actor in validated_data.pop("actoren")] validated_data["actoren"] = Actor.objects.filter(uuid__in=actoren) - return super().create(validated_data) + klantcontact = super().create(validated_data) + if internetaken: + linked_internetaken = [] + for internetaak in internetaken: + internetaak["klantcontact"] = {"uuid": str(klantcontact.uuid)} + linked_internetaken.append(internetaak) -class BetrokkeneForeignKeySerializer(serializers.HyperlinkedModelSerializer): + serializer = InterneTaakSerializer( + data=linked_internetaken, context=self.context, many=True + ) + serializer.is_valid(raise_exception=True) + serializer.save() + + if betrokkenen: + linked_betrokkene = [] + for betrokkene in betrokkenen: + betrokkene["partij"] = betrokkene.pop("partij_set", []) + betrokkene["klantcontact"] = {"uuid": str(klantcontact.uuid)} + linked_betrokkene.append(betrokkene) + + serializer = BetrokkeneSerializer( + data=linked_betrokkene, context=self.context, many=True + ) + serializer.is_valid(raise_exception=True) + serializer.save() + + if onderwerpobjecten: + for index, onderwerpobject in enumerate(onderwerpobjecten): + onderwerpobject = Onderwerpobject.objects.get( + uuid=str(onderwerpobject["uuid"]) + ) + if onderwerpobject.klantcontact: + raise serializers.ValidationError( + { + f"gingOverOnderwerpobject.{index}.uuid": _( + "Onderwerpobject object already is linked to a klantcontact object." + ) + } + ) + onderwerpobject.klantcontact = klantcontact + onderwerpobject.save() + + if bijlagen: + for index, bijlage in enumerate(bijlagen): + bijlage = Bijlage.objects.get(uuid=str(bijlage["uuid"])) + if bijlage.klantcontact: + raise serializers.ValidationError( + { + f"omvatteBijlagen.{index}.uuid": _( + "Bijlage object already is linked to a klantcontact object." + ) + } + ) + bijlage.klantcontact = klantcontact + bijlage.save() + + return klantcontact + + +class OnderwerpobjectObjectidentificatorSerializer(GegevensGroepSerializer): class Meta: - model = Betrokkene + model = Onderwerpobject + gegevensgroep = "objectidentificator" + + +class OnderwerpobjectSerializer( + NestedGegevensGroepMixin, serializers.HyperlinkedModelSerializer +): + klantcontact = KlantcontactForeignKeySerializer( + required=True, + allow_null=True, + help_text=_("'Klantcontact' ging over 'Onderwerpobject'"), + ) + was_klantcontact = KlantcontactForeignKeySerializer( + required=True, + allow_null=True, + help_text=_("'Onderwerpobject' was 'Klantcontact'"), + ) + objectidentificator = OnderwerpobjectObjectidentificatorSerializer( + required=False, + allow_null=True, + help_text=_( + "Gegevens die een onderwerpobject in een extern register uniek " + "identificeren." + ), + ) + + class Meta: + model = Onderwerpobject fields = ( "uuid", "url", + "klantcontact", + "was_klantcontact", + "objectidentificator", ) + extra_kwargs = { - "uuid": {"required": True, "validators": [betrokkene_exists]}, + "uuid": {"read_only": True}, "url": { - "view_name": "betrokkene-detail", + "view_name": "klantcontact-detail", "lookup_field": "uuid", - "help_text": "De unieke URL van deze betrokkene binnen deze API.", + "help_text": "De unieke URL van dit klantcontact binnen deze API.", }, } + @transaction.atomic + def update(self, instance, validated_data): + if "klantcontact" in validated_data: + if klantcontact := validated_data.pop("klantcontact", None): + klantcontact = Klantcontact.objects.get( + uuid=str(klantcontact.get("uuid")) + ) -class BezoekadresSerializer(GegevensGroepSerializer): - class Meta: - model = Betrokkene - gegevensgroep = "bezoekadres" + validated_data["klantcontact"] = klantcontact + if "was_klantcontact" in validated_data: + if was_klantcontact := validated_data.pop("was_klantcontact", None): + was_klantcontact = Klantcontact.objects.get( + uuid=str(was_klantcontact.get("uuid")) + ) -class CorrespondentieadresSerializer(GegevensGroepSerializer): - class Meta: - model = Betrokkene - gegevensgroep = "correspondentieadres" - ref_name = "betrokkene correspondentieadres" + validated_data["was_klantcontact"] = was_klantcontact + return super().update(instance, validated_data) -class ContactnaamSerializer(GegevensGroepSerializer): + @transaction.atomic + def create(self, validated_data): + if klantcontact := validated_data.pop("klantcontact", None): + klantcontact = Klantcontact.objects.get(uuid=str(klantcontact.get("uuid"))) + + if was_klantcontact := validated_data.pop("was_klantcontact", None): + was_klantcontact = Klantcontact.objects.get( + uuid=str(was_klantcontact.get("uuid")) + ) + + validated_data["klantcontact"] = klantcontact + validated_data["was_klantcontact"] = was_klantcontact + + return super().create(validated_data) + + +class BijlageObjectidentificatorSerializer(GegevensGroepSerializer): class Meta: - model = Betrokkene - gegevensgroep = "contactnaam" + model = Bijlage + gegevensgroep = "objectidentificator" -class BetrokkeneSerializer( +class BijlageSerializer( NestedGegevensGroepMixin, serializers.HyperlinkedModelSerializer ): klantcontact = KlantcontactForeignKeySerializer( required=True, - allow_null=False, - help_text=_("Persoon of organisatie die betrokken was bij een klantcontact."), - ) - digitaal_adres = DigitaalAdresForeignKeySerializer( - required=True, - allow_null=True, - help_text=_( - "Digitaal adres dat een betrokkene bij klantcontact verstrekte " - "voor gebruik bij opvolging van een klantcontact." - ), - ) - - bezoekadres = BezoekadresSerializer( - required=False, - allow_null=True, - help_text=_( - "Adres waarop de betrokkene bij klantcontact in naar aanleiding " - "van dat contact af te leggen bezoeken wil ontvangen. Dit mag " - "afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen." - ), - ) - correspondentieadres = CorrespondentieadresSerializer( - required=False, allow_null=True, - help_text=_( - "Adres waarop de betrokkene bij klantcontact naar aanleiding van " - "dat contact te versturen post wil ontvangen. Dit mag afwijken van " - "voor de verstrekker eventueel in een basisregistratie bekende adressen." - ), + help_text=_("'Klantcontact' ging over 'Onderwerpobject'"), ) - contactnaam = ContactnaamSerializer( + objectidentificator = BijlageObjectidentificatorSerializer( required=False, allow_null=True, help_text=_( - "Naam die de betrokkene bij klantcontact tijdens vervolghandelingen naar " - "aanleiding van dat contact wil gebruiken. Deze mag afwijken van eventueel " - "in de Basisregistratie Personen (BRP) bekende naam van de betrokkene." + "Gegevens die een inhoudsobject in een extern register " + "uniek identificeren." ), ) class Meta: - model = Betrokkene + model = Bijlage fields = ( "uuid", "url", "klantcontact", - "digitaal_adres", - "bezoekadres", - "correspondentieadres", - "contactnaam", - "rol", - "organisatienaam", - "initiator", + "objectidentificator", ) + extra_kwargs = { "uuid": {"read_only": True}, "url": { - "view_name": "betrokkene-detail", + "view_name": "klantcontact-detail", "lookup_field": "uuid", - "help_text": "De unieke URL van deze betrokkene binnen deze API.", + "help_text": "De unieke URL van dit klantcontact binnen deze API.", }, } @transaction.atomic def update(self, instance, validated_data): - if klantcontact := validated_data.pop("klantcontact", None): - validated_data["klantcontact"] = Klantcontact.objects.get( - uuid=str(klantcontact.get("uuid")) - ) - - if validated_data.get("digitaal_adres"): - if digitaal_adres := validated_data.pop("digitaal_adres", None): - validated_data["digitaal_adres"] = DigitaalAdres.objects.get( - uuid=str(digitaal_adres.get("uuid")) + if "klantcontact" in validated_data: + if klantcontact := validated_data.pop("klantcontact", None): + klantcontact = Klantcontact.objects.get( + uuid=str(klantcontact.get("uuid")) ) + validated_data["klantcontact"] = klantcontact return super().update(instance, validated_data) @transaction.atomic def create(self, validated_data): - klantcontact_uuid = str(validated_data.pop("klantcontact").get("uuid")) - digitaal_adres_uuid = str(validated_data.pop("digitaal_adres").get("uuid")) - - validated_data["klantcontact"] = Klantcontact.objects.get( - uuid=klantcontact_uuid - ) - validated_data["digitaal_adres"] = DigitaalAdres.objects.get( - uuid=digitaal_adres_uuid - ) + if klantcontact := validated_data.pop("klantcontact", None): + validated_data["klantcontact"] = Klantcontact.objects.get( + uuid=str(klantcontact.get("uuid")) + ) return super().create(validated_data) diff --git a/src/openklant/components/klantinteracties/api/serializers/partijen.py b/src/openklant/components/klantinteracties/api/serializers/partijen.py index d4197b0e..8eff3c20 100644 --- a/src/openklant/components/klantinteracties/api/serializers/partijen.py +++ b/src/openklant/components/klantinteracties/api/serializers/partijen.py @@ -11,6 +11,7 @@ BetrokkeneForeignKeySerializer, ) from openklant.components.klantinteracties.api.validators import ( + contactpersoon_exists, organisatie_exists, partij_exists, ) @@ -55,14 +56,9 @@ class Meta: ref_name = "partij correspondentieadres serializer" -class PartijSerializer( +class PartijBaseSerializer( NestedGegevensGroepMixin, serializers.HyperlinkedModelSerializer ): - betrokkene = BetrokkeneForeignKeySerializer( - required=True, - allow_null=True, - help_text=_("Betrokkene bij klantcontact die een partij was."), - ) digitaal_adres = DigitaalAdresForeignKeySerializer( required=True, allow_null=True, @@ -132,49 +128,53 @@ class Meta: @transaction.atomic def update(self, instance, validated_data): - if validated_data.get("betrokkene"): + if "betrokkene" in validated_data: if betrokkene := validated_data.pop("betrokkene", None): - validated_data["betrokkene"] = Betrokkene.objects.get( - uuid=str(betrokkene.get("uuid")) - ) + betrokkene = Betrokkene.objects.get(uuid=str(betrokkene.get("uuid"))) - if validated_data.get("digitaal_adres"): + validated_data["betrokkene"] = betrokkene + + if "digitaal_adres" in validated_data: if digitaal_adres := validated_data.pop("digitaal_adres", None): - validated_data["digitaal_adres"] = DigitaalAdres.objects.get( + digitaal_adres = DigitaalAdres.objects.get( uuid=str(digitaal_adres.get("uuid")) ) - if validated_data.get("voorkeurs_digitaal_adres"): + validated_data["digitaal_adres"] = digitaal_adres + + if "voorkeurs_digitaal_adres" in validated_data: if voorkeurs_digitaal_adres := validated_data.pop( "voorkeurs_digitaal_adres", None ): - validated_data["voorkeurs_digitaal_adres"] = DigitaalAdres.objects.get( + voorkeurs_digitaal_adres = DigitaalAdres.objects.get( uuid=str(voorkeurs_digitaal_adres.get("uuid")) ) - if validated_data.get("vertegenwoordigde"): + validated_data["voorkeurs_digitaal_adres"] = voorkeurs_digitaal_adres + + if "vertegenwoordigde" in validated_data: if vertegenwoordigde := validated_data.pop("vertegenwoordigde", []): partijen = [str(partij["uuid"]) for partij in vertegenwoordigde] - instance.vertegenwoordigde.set(Partij.objects.filter(uuid__in=partijen)) + vertegenwoordigde = Partij.objects.filter(uuid__in=partijen) + + instance.vertegenwoordigde.set(vertegenwoordigde) return super().update(instance, validated_data) @transaction.atomic def create(self, validated_data): if betrokkene := validated_data.pop("betrokkene", None): - validated_data["betrokkene"] = Betrokkene.objects.get( - uuid=str(betrokkene.get("uuid")) - ) + betrokkene = Betrokkene.objects.get(uuid=str(betrokkene.get("uuid"))) if digitaal_adres := validated_data.pop("digitaal_adres", None): - validated_data["digitaal_adres"] = DigitaalAdres.objects.get( + digitaal_adres = DigitaalAdres.objects.get( uuid=str(digitaal_adres.get("uuid")) ) if voorkeurs_digitaal_adres := validated_data.pop( "voorkeurs_digitaal_adres", None ): - validated_data["voorkeurs_digitaal_adres"] = DigitaalAdres.objects.get( + voorkeurs_digitaal_adres = DigitaalAdres.objects.get( uuid=str(voorkeurs_digitaal_adres.get("uuid")) ) @@ -184,9 +184,62 @@ def create(self, validated_data): uuid__in=partijen ) + validated_data["betrokkene"] = betrokkene + validated_data["digitaal_adres"] = digitaal_adres + validated_data["voorkeurs_digitaal_adres"] = voorkeurs_digitaal_adres + return super().create(validated_data) +class PartijSerializer(PartijBaseSerializer): + betrokkene = BetrokkeneForeignKeySerializer( + required=True, + allow_null=True, + help_text=_("Betrokkene bij klantcontact die een partij was."), + ) + + class Meta(PartijBaseSerializer.Meta): + fields = PartijBaseSerializer.Meta.fields + ("betrokkene",) + + +class KlantcontactPartijSerializer(PartijBaseSerializer): + betrokkene = BetrokkeneForeignKeySerializer( + read_only=True, + allow_null=True, + help_text=_("Betrokkene bij klantcontact die een partij was."), + ) + + class Meta(PartijBaseSerializer.Meta): + fields = PartijBaseSerializer.Meta.fields + ("betrokkene",) + + +class ContactPersoonForeignkeySerializer(serializers.HyperlinkedModelSerializer): + partij = PartijForeignKeySerializer( + read_only=True, + help_text=_("Persoon of organisatie waarmee de gemeente een relatie heeft."), + ) + + class Meta: + model = Contactpersoon + fields = ( + "id", + "url", + "partij", + ) + extra_kwargs = { + "id": { + "required": True, + "read_only": False, + "validators": [contactpersoon_exists], + }, + "url": { + "view_name": "contactpersoon-detail", + "lookup_field": "id", + "help_text": "De unieke URL van dit contact persoon binnen deze API.", + }, + } + + class OrganisatieForeignKeySerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Organisatie @@ -214,6 +267,13 @@ class OrganisatieSerializer(serializers.HyperlinkedModelSerializer): allow_null=False, help_text=_("Persoon of organisatie waarmee de gemeente een relatie heeft."), ) + contactpersoon = ContactPersoonForeignkeySerializer( + required=True, + allow_null=True, + many=True, + source="contactpersoon_set", + help_text=_("Organisatie waarvoor een contactpersoon werkte."), + ) class Meta: model = Organisatie @@ -222,6 +282,7 @@ class Meta: "url", "naam", "partij", + "contactpersoon", ) extra_kwargs = { "id": {"read_only": True}, @@ -234,17 +295,78 @@ class Meta: @transaction.atomic def update(self, instance, validated_data): - if partij := validated_data.pop("partij", None): - validated_data["partij"] = Partij.objects.get(uuid=str(partij.get("uuid"))) + if "partij" in validated_data: + if partij := validated_data.pop("partij", None): + partij_uuid = str(partij.get("uuid")) + if partij_uuid != str(instance.partij.uuid): + if Organisatie.objects.filter(partij__uuid=partij_uuid): + raise serializers.ValidationError( + { + "partij.uuid": _( + "Er bestaat al een organisatie met eenzelfde uuid." + ) + } + ) + + validated_data["partij"] = Partij.objects.get( + uuid=str(partij.get("uuid")) + ) + + if "contactpersoon_set" in validated_data: + existing_contactpersonen = instance.contactpersoon_set.all() + contactpersonen_ids = [ + contactpersoon["id"] + for contactpersoon in validated_data.pop("contactpersoon_set") + ] + + # unset relation of contactpersoon that weren't given with the update + for contactpersoon in existing_contactpersonen: + if contactpersoon.id not in contactpersonen_ids: + contactpersoon.organisatie = None + contactpersoon.save() + + # create relation between contactpersoon and organisatie of new entries + for contactpersoon_id in contactpersonen_ids: + if contactpersoon_id not in existing_contactpersonen.values_list( + "id", flat=True + ): + contactpersoon = Contactpersoon.objects.get(id=contactpersoon_id) + contactpersoon.organisatie = instance + contactpersoon.save() return super().update(instance, validated_data) @transaction.atomic def create(self, validated_data): partij_uuid = str(validated_data.pop("partij").get("uuid")) + if Organisatie.objects.filter(partij__uuid=partij_uuid): + raise serializers.ValidationError( + {"partij.uuid": _("Er bestaat al een organisatie met eenzelfde uuid.")} + ) + + contactpersonen = validated_data.pop("contactpersoon_set") + validated_data["partij"] = Partij.objects.get(uuid=partij_uuid) - return super().create(validated_data) + oranisatie = super().create(validated_data) + + if contactpersonen: + for index, contactpersoon in enumerate(contactpersonen): + contactpersoon = Contactpersoon.objects.get( + id=str(contactpersoon["id"]) + ) + if contactpersoon.organisatie: + raise serializers.ValidationError( + { + f"contactpersoon.{index}.id": _( + "Contactpersoon object already is linked to a organisatie object." + ) + } + ) + contactpersoon.organisatie = oranisatie + contactpersoon.save() + + return oranisatie class PersoonContactSerializer(GegevensGroepSerializer): @@ -291,19 +413,22 @@ class Meta: @transaction.atomic def update(self, instance, validated_data): - if partij := validated_data.pop("partij", None): - partij_uuid = str(partij.get("uuid")) - if partij_uuid != str(instance.partij.uuid): - if Persoon.objects.filter(partij__uuid=partij_uuid): - raise serializers.ValidationError( - { - "partij.uuid": _( - "Er bestaat al een partij met eenzelfde uuid." - ) - } - ) + if "partij" in validated_data: + if partij := validated_data.pop("partij", None): + partij_uuid = str(partij.get("uuid")) + if partij_uuid != str(instance.partij.uuid): + if Persoon.objects.filter(partij__uuid=partij_uuid): + raise serializers.ValidationError( + { + "partij.uuid": _( + "Er bestaat al een partij met eenzelfde uuid." + ) + } + ) - validated_data["partij"] = Partij.objects.get(uuid=str(partij.get("uuid"))) + validated_data["partij"] = Partij.objects.get( + uuid=str(partij.get("uuid")) + ) return super().update(instance, validated_data) @@ -334,10 +459,11 @@ class ContactpersoonSerializer( allow_null=False, help_text=_("Persoon of organisatie waarmee de gemeente een relatie heeft."), ) - organisatie = OrganisatieForeignKeySerializer( + werkte_voor_organisatie = OrganisatieForeignKeySerializer( required=True, allow_null=True, help_text=_("Organisatie waarvoor een contactpersoon werkte."), + source="organisatie", ) contactnaam = ContactpersoonPersoonSerializer( required=False, @@ -355,7 +481,7 @@ class Meta: "id", "url", "partij", - "organisatie", + "werkte_voor_organisatie", "contactnaam", ) @@ -383,25 +509,28 @@ def update(self, instance, validated_data): validated_data["partij"] = Partij.objects.get(uuid=str(partij.get("uuid"))) - if validated_data.get("organisatie"): + if "organisatie" in validated_data: if organisatie := validated_data.pop("organisatie", None): - validated_data["organisatie"] = Organisatie.objects.get( - id=organisatie.get("id") - ) + organisatie = Organisatie.objects.get(id=organisatie.get("id")) + + validated_data["organisatie"] = organisatie return super().update(instance, validated_data) @transaction.atomic def create(self, validated_data): partij_uuid = str(validated_data.pop("partij").get("uuid")) - organisatie_id = validated_data.pop("organisatie").get("id") if Contactpersoon.objects.filter(partij__uuid=partij_uuid): raise serializers.ValidationError( {"partij.uuid": _("Er bestaat al een partij met eenzelfde uuid.")} ) validated_data["partij"] = Partij.objects.get(uuid=partij_uuid) - validated_data["organisatie"] = Organisatie.objects.get(id=organisatie_id) + + if organisatie := validated_data.pop("organisatie"): + organisatie = Organisatie.objects.get(id=organisatie.get("id")) + + validated_data["organisatie"] = organisatie return super().create(validated_data) @@ -450,7 +579,7 @@ class Meta: @transaction.atomic def update(self, instance, validated_data): - if validated_data.get("partij"): + if "partij" in validated_data: if partij := validated_data.pop("partij", None): validated_data["partij"] = Partij.objects.get( uuid=str(partij.get("uuid")) diff --git a/src/openklant/components/klantinteracties/api/tests/test_actoren.py b/src/openklant/components/klantinteracties/api/tests/test_actoren.py index 90b81d9b..cc357e22 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_actoren.py +++ b/src/openklant/components/klantinteracties/api/tests/test_actoren.py @@ -63,8 +63,6 @@ def test_create_actor(self): }, ) - # TODO: write subtest test to test if actor's unique is true validation works propperly - def test_update_actor(self): actor = ActorFactory.create( naam="Phil", @@ -123,8 +121,6 @@ def test_update_actor(self): }, ) - # TODO: write subtest test to test if actor's unique is true validation works propperly - def test_partial_update_actor(self): actor = ActorFactory.create( naam="Phil", @@ -554,7 +550,11 @@ def test_create_organisatorische_eenheid(self): self.assertEqual(data["faxnummer"], "7762323") self.assertEqual(data["telefoonnummer"], "7762323") - # TODO: write subtest test to test if actor's unique is true validation works propperly + with self.subTest("check_if_actor_unique_validation_works"): + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "actor.uuid") def test_update_organisatorische_eenheid(self): actor, actor2 = ActorFactory.create_batch(2) @@ -610,8 +610,6 @@ def test_update_organisatorische_eenheid(self): self.assertEqual(data["faxnummer"], "5551212") self.assertEqual(data["telefoonnummer"], "5551212") - # TODO: write subtest test to test if actor's unique is true validation works propperly - def test_partial_update_organisatorische_eenheid(self): actor = ActorFactory.create() organisatorische_eenheid = OrganisatorischeEenheidFactory.create( diff --git a/src/openklant/components/klantinteracties/api/tests/test_digitaal_adres.py b/src/openklant/components/klantinteracties/api/tests/test_digitaal_adres.py new file mode 100644 index 00000000..275ca312 --- /dev/null +++ b/src/openklant/components/klantinteracties/api/tests/test_digitaal_adres.py @@ -0,0 +1,174 @@ +from rest_framework import status +from rest_framework.test import APITestCase +from vng_api_common.tests import JWTAuthMixin, reverse + +from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import ( + DigitaalAdresFactory, +) +from openklant.components.klantinteracties.models.tests.factories.klantcontacten import ( + BetrokkeneFactory, +) + + +class DigitaalAdresTests(JWTAuthMixin, APITestCase): + def test_list_digitaal_adres(self): + list_url = reverse("digitaaladres-list") + DigitaalAdresFactory.create_batch(2) + + response = self.client.get(list_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + self.assertEqual(len(data["results"]), 2) + + def test_read_digitaal_adres(self): + digitaal_adres = DigitaalAdresFactory.create() + detail_url = reverse( + "digitaaladres-detail", kwargs={"uuid": str(digitaal_adres.uuid)} + ) + + response = self.client.get(detail_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_create_digitaal_adres(self): + list_url = reverse("digitaaladres-list") + data = { + "betrokkene": None, + "soortDigitaalAdres": "soortDigitaalAdres", + "adres": "adres", + "omschrijving": "omschrijving", + } + + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertIsNone(data["betrokkene"]) + self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres") + self.assertEqual(data["adres"], "adres") + self.assertEqual(data["omschrijving"], "omschrijving") + + with self.subTest("with_betrokkene"): + betrokkene = BetrokkeneFactory.create() + data = { + "betrokkene": {"uuid": str(betrokkene.uuid)}, + "soortDigitaalAdres": "soortDigitaalAdres", + "adres": "adres", + "omschrijving": "omschrijving", + } + + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["betrokkene"]["uuid"], str(betrokkene.uuid)) + self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres") + self.assertEqual(data["adres"], "adres") + self.assertEqual(data["omschrijving"], "omschrijving") + + def test_update_digitaal_adres(self): + betrokkene, betrokkene2 = BetrokkeneFactory.create_batch(2) + digitaal_adres = DigitaalAdresFactory.create( + betrokkene=betrokkene, + soort_digitaal_adres="soortDigitaalAdres", + adres="adres", + omschrijving="omschrijving", + ) + detail_url = reverse( + "digitaaladres-detail", kwargs={"uuid": str(digitaal_adres.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["betrokkene"]["uuid"], str(betrokkene.uuid)) + self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres") + self.assertEqual(data["adres"], "adres") + self.assertEqual(data["omschrijving"], "omschrijving") + + data = { + "betrokkene": {"uuid": str(betrokkene2.uuid)}, + "soortDigitaalAdres": "changed", + "adres": "changed", + "omschrijving": "changed", + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["betrokkene"]["uuid"], str(betrokkene2.uuid)) + self.assertEqual(data["soortDigitaalAdres"], "changed") + self.assertEqual(data["adres"], "changed") + self.assertEqual(data["omschrijving"], "changed") + + with self.subTest("update_betrokkene_to_none"): + data = { + "betrokkene": None, + "soortDigitaalAdres": "changed", + "adres": "changed", + "omschrijving": "changed", + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertIsNone(data["betrokkene"]) + self.assertEqual(data["soortDigitaalAdres"], "changed") + self.assertEqual(data["adres"], "changed") + self.assertEqual(data["omschrijving"], "changed") + + def test_partial_update_digitaal_adres(self): + betrokkene = BetrokkeneFactory.create() + digitaal_adres = DigitaalAdresFactory.create( + betrokkene=betrokkene, + soort_digitaal_adres="soortDigitaalAdres", + adres="adres", + omschrijving="omschrijving", + ) + detail_url = reverse( + "digitaaladres-detail", kwargs={"uuid": str(digitaal_adres.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["betrokkene"]["uuid"], str(betrokkene.uuid)) + self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres") + self.assertEqual(data["adres"], "adres") + self.assertEqual(data["omschrijving"], "omschrijving") + + data = { + "soortDigitaalAdres": "changed", + } + + response = self.client.patch(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["betrokkene"]["uuid"], str(betrokkene.uuid)) + self.assertEqual(data["soortDigitaalAdres"], "changed") + self.assertEqual(data["adres"], "adres") + self.assertEqual(data["omschrijving"], "omschrijving") + + def test_destroy_digitaal_adres(self): + digitaal_adres = DigitaalAdresFactory.create() + detail_url = reverse( + "digitaaladres-detail", kwargs={"uuid": str(digitaal_adres.uuid)} + ) + response = self.client.delete(detail_url) + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) + + list_url = reverse("digitaaladres-list") + response = self.client.get(list_url) + data = response.json() + self.assertEqual(data["count"], 0) diff --git a/src/openklant/components/klantinteracties/api/tests/test_filters.py b/src/openklant/components/klantinteracties/api/tests/test_filters.py new file mode 100644 index 00000000..3570e141 --- /dev/null +++ b/src/openklant/components/klantinteracties/api/tests/test_filters.py @@ -0,0 +1,210 @@ +from rest_framework import status +from rest_framework.test import APITestCase +from vng_api_common.tests import JWTAuthMixin, reverse + +from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import ( + DigitaalAdresFactory, +) + +from openklant.components.klantinteracties.models.tests.factories.klantcontacten import ( + BetrokkeneFactory, + KlantcontactFactory, +) +from openklant.components.klantinteracties.models.tests.factories.partijen import ( + PartijFactory, +) + + +class KlantcontactFilterTests(JWTAuthMixin, APITestCase): + url = reverse("klantcontact-list") + + def setUp(self): + super().setUp() + ( + klantcontact, + klantcontact2, + klantcontact3, + klantcontact4, + self.klantcontact5, + ) = KlantcontactFactory.create_batch(5) + for betrokkene_klantcontact in [ + klantcontact, + klantcontact2, + klantcontact3, + klantcontact4, + self.klantcontact5, + ]: + self.betrokkene = BetrokkeneFactory.create( + klantcontact=betrokkene_klantcontact + ) + + def test_filter_betrokkene_uuid(self): + response = self.client.get( + self.url, {"had_betrokkene__uuid": f"{self.betrokkene.uuid}"} + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.klantcontact5.uuid), data[0]["uuid"]) + + def test_filter_betrokkene_url(self): + response = self.client.get( + self.url, + { + "had_betrokkene__url": f"http://testserver/klantinteracties/api/v1/klantcontact/{self.betrokkene.uuid}" + }, + ) + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.klantcontact5.uuid), data[0]["uuid"]) + + +class BetrokkeneFilterTests(JWTAuthMixin, APITestCase): + url = reverse("betrokkene-list") + + def setUp(self): + super().setUp() + + self.klantcontact = KlantcontactFactory.create(nummer="6237172371") + self.betrokkene = BetrokkeneFactory.create(klantcontact=self.klantcontact) + self.digitaal_adres = DigitaalAdresFactory.create( + betrokkene=self.betrokkene, adres="search_param_adres" + ) + self.partij = PartijFactory.create( + betrokkene=self.betrokkene, nummer="8123973457" + ) + + ( + betrokkene2, + betrokkene3, + betrokkene4, + betrokkene5, + ) = BetrokkeneFactory.create_batch(4) + + DigitaalAdresFactory.create(betrokkene=betrokkene2) + PartijFactory.create(betrokkene=betrokkene2) + + DigitaalAdresFactory.create(betrokkene=betrokkene3) + PartijFactory.create(betrokkene=betrokkene3) + + DigitaalAdresFactory.create(betrokkene=betrokkene4) + PartijFactory.create(betrokkene=betrokkene4) + + DigitaalAdresFactory.create(betrokkene=betrokkene5) + PartijFactory.create(betrokkene=betrokkene5) + + def test_filter_klantcontact_url(self): + response = self.client.get( + self.url, + { + "klantcontact__url": f"http://testserver/klantinteracties/api/v1/klantcontact/{self.klantcontact.uuid}" + }, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_klantcontact_uuid(self): + response = self.client.get( + self.url, + {"klantcontact__uuid": str(self.klantcontact.uuid)}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_klantcontact_nummer(self): + response = self.client.get( + self.url, + {"klantcontact__nummer": str(6237172371)}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_verstrektedigitaal_adres_url(self): + digitaal_adres_url = f"http://testserver/klantinteracties/api/v1/digitaal_adres/{self.digitaal_adres.uuid}" + response = self.client.get( + self.url, + {"verstrektedigitaal_adres__url": digitaal_adres_url}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_verstrektedigitaal_adres_uuid(self): + response = self.client.get( + self.url, + {"verstrektedigitaal_adres__uuid": str(self.digitaal_adres.uuid)}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_verstrektedigitaal_adres_adres(self): + response = self.client.get( + self.url, + {"verstrektedigitaal_adres__adres": "search_param_adres"}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_was_partij_url(self): + response = self.client.get( + self.url, + { + "was_partij__url": f"http://testserver/klantinteracties/api/v1/partij/{self.partij.uuid}" + }, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_was_partij_uuid(self): + response = self.client.get( + self.url, + {"was_partij__uuid": str(self.partij.uuid)}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) + + def test_filter_was_partij_nummer(self): + response = self.client.get( + self.url, + {"was_partij__nummer": "8123973457"}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json()["results"] + + self.assertEqual(1, len(data)) + self.assertEqual(str(self.betrokkene.uuid), data[0]["uuid"]) diff --git a/src/openklant/components/klantinteracties/api/tests/test_internetaken.py b/src/openklant/components/klantinteracties/api/tests/test_internetaken.py new file mode 100644 index 00000000..1cff5dbf --- /dev/null +++ b/src/openklant/components/klantinteracties/api/tests/test_internetaken.py @@ -0,0 +1,161 @@ +from rest_framework import status +from rest_framework.test import APITestCase +from vng_api_common.tests import JWTAuthMixin, reverse + +from openklant.components.klantinteracties.models.tests.factories.actoren import ( + ActorFactory, +) +from openklant.components.klantinteracties.models.tests.factories.internetaken import ( + InterneTaakFactory, +) +from openklant.components.klantinteracties.models.tests.factories.klantcontacten import ( + KlantcontactFactory, +) + + +class InterneTaakTests(JWTAuthMixin, APITestCase): + def test_list_internetaak(self): + list_url = reverse("internetaak-list") + InterneTaakFactory.create_batch(2) + + response = self.client.get(list_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + self.assertEqual(len(data["results"]), 2) + + def test_read_internetaak(self): + internetaak = InterneTaakFactory.create() + detail_url = reverse( + "internetaak-detail", kwargs={"uuid": str(internetaak.uuid)} + ) + + response = self.client.get(detail_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_create_internetaak(self): + actor = ActorFactory.create() + klantcontact = KlantcontactFactory.create() + + list_url = reverse("internetaak-list") + data = { + "actor": {"uuid": str(actor.uuid)}, + "klantcontact": {"uuid": str(klantcontact.uuid)}, + "nummer": "1312312312", + "gevraagdeHandeling": "gevraagdeHandeling", + "toelichting": "toelichting", + "status": "verwerkt", + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["actor"]["uuid"], str(actor.uuid)) + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["nummer"], "1312312312") + self.assertEqual(data["gevraagdeHandeling"], "gevraagdeHandeling") + self.assertEqual(data["toelichting"], "toelichting") + self.assertEqual(data["status"], "verwerkt") + + def test_update_internetaak(self): + actor, actor2 = ActorFactory.create_batch(2) + klantcontact, klantcontact2 = KlantcontactFactory.create_batch(2) + internetaak = InterneTaakFactory.create( + actor=actor, + klantcontact=klantcontact, + nummer="1237713712", + gevraagde_handeling="gevraagdeHandeling", + toelichting="toelichting", + status="verwerkt", + ) + detail_url = reverse( + "internetaak-detail", kwargs={"uuid": str(internetaak.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["actor"]["uuid"], str(actor.uuid)) + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["nummer"], "1237713712") + self.assertEqual(data["gevraagdeHandeling"], "gevraagdeHandeling") + self.assertEqual(data["toelichting"], "toelichting") + self.assertEqual(data["status"], "verwerkt") + + data = { + "actor": {"uuid": str(actor2.uuid)}, + "klantcontact": {"uuid": str(klantcontact2.uuid)}, + "nummer": "9999999999", + "gevraagdeHandeling": "changed", + "toelichting": "changed", + "status": "te_verwerken", + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["actor"]["uuid"], str(actor2.uuid)) + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact2.uuid)) + self.assertEqual(data["nummer"], "9999999999") + self.assertEqual(data["gevraagdeHandeling"], "changed") + self.assertEqual(data["toelichting"], "changed") + self.assertEqual(data["status"], "te_verwerken") + + def test_partial_update_internetaak(self): + actor = ActorFactory.create() + klantcontact = KlantcontactFactory.create() + internetaak = InterneTaakFactory.create( + actor=actor, + klantcontact=klantcontact, + nummer="1237713712", + gevraagde_handeling="gevraagdeHandeling", + toelichting="toelichting", + status="verwerkt", + ) + detail_url = reverse( + "internetaak-detail", kwargs={"uuid": str(internetaak.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["actor"]["uuid"], str(actor.uuid)) + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["nummer"], "1237713712") + self.assertEqual(data["gevraagdeHandeling"], "gevraagdeHandeling") + self.assertEqual(data["toelichting"], "toelichting") + self.assertEqual(data["status"], "verwerkt") + + data = {"nummer": "0000000000"} + + response = self.client.patch(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["actor"]["uuid"], str(actor.uuid)) + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["nummer"], "0000000000") + self.assertEqual(data["gevraagdeHandeling"], "gevraagdeHandeling") + self.assertEqual(data["toelichting"], "toelichting") + self.assertEqual(data["status"], "verwerkt") + + def test_destroy_internetaak(self): + internetaak = InterneTaakFactory.create() + detail_url = reverse( + "internetaak-detail", kwargs={"uuid": str(internetaak.uuid)} + ) + response = self.client.delete(detail_url) + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) + + list_url = reverse("internetaak-list") + response = self.client.get(list_url) + data = response.json() + self.assertEqual(data["count"], 0) diff --git a/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py b/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py index aee8fe12..77e484dc 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py +++ b/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py @@ -10,7 +10,9 @@ ) from openklant.components.klantinteracties.models.tests.factories.klantcontacten import ( BetrokkeneFactory, + BijlageFactory, KlantcontactFactory, + OnderwerpobjectFactory, ) @@ -40,6 +42,10 @@ def test_create_klantcontact(self): actor, actor2 = ActorFactory.create_batch(2) list_url = reverse("klantcontact-list") data = { + "gingOverOnderwerpobject": [], + "omvatteBijlagen": [], + "hadBetrokkene": [], + "leideTotInterneTaken": [], "nummer": "1234567890", "kanaal": "kanaal", "onderwerp": "onderwerp", @@ -57,6 +63,116 @@ def test_create_klantcontact(self): data = response.json() + self.assertEqual(data["gingOverOnderwerpobject"], []) + self.assertEqual(data["omvatteBijlagen"], []) + self.assertEqual(data["nummer"], "1234567890") + self.assertEqual(data["kanaal"], "kanaal") + self.assertEqual(data["onderwerp"], "onderwerp") + self.assertEqual(data["inhoud"], "inhoud") + self.assertEqual(data["taal"], "taal") + self.assertEqual(data["plaatsgevondenOp"], "2019-08-24T14:15:22Z") + self.assertTrue(data["indicatieContactGelukt"]) + self.assertTrue(data["vertrouwelijk"]) + self.assertEqual( + data["actoren"], + [ + { + "uuid": str(actor.uuid), + "url": f"http://testserver/klantinteracties/api/v1/actoren/{str(actor.uuid)}", + }, + { + "uuid": str(actor2.uuid), + "url": f"http://testserver/klantinteracties/api/v1/actoren/{str(actor2.uuid)}", + }, + ], + ) + + def test_create_klantcontact_with_reverse_lookup_fields(self): + actor, actor2 = ActorFactory.create_batch(2) + onderwerpobject = OnderwerpobjectFactory.create(klantcontact=None) + bijlage = BijlageFactory.create(klantcontact=None) + list_url = reverse("klantcontact-list") + data = { + "gingOverOnderwerpobject": [ + {"uuid": str(onderwerpobject.uuid)}, + ], + "omvatteBijlagen": [ + {"uuid": str(bijlage.uuid)}, + ], + "hadBetrokkene": [ + { + "partij": [], + "bezoekadres": { + "nummeraanduidingId": "729512ab-1572-4dd7-a026-f6559db43bdc", + "adresregel1": "string", + "adresregel2": "string", + "adresregel3": "string", + "land": "1234", + }, + "correspondentieadres": { + "nummeraanduidingId": "80e2fa71-f9bd-4748-ade4-1e125b756b8a", + "adresregel1": "string", + "adresregel2": "string", + "adresregel3": "string", + "land": "1234", + }, + "contactnaam": { + "voorletters": "string", + "voornaam": "string", + "voorvoegselAchternaam": "string", + "achternaam": "12312", + }, + "rol": "vertegenwoordiger", + "organisatienaam": "string", + "initiator": True, + } + ], + "leideTotInterneTaken": [ + { + "nummer": "1273712737", + "gevraagdeHandeling": "string", + "actor": {"uuid": str(actor.uuid)}, + "toelichting": "string", + "status": "te_verwerken", + } + ], + "nummer": "1234567890", + "kanaal": "kanaal", + "onderwerp": "onderwerp", + "actoren": [{"uuid": str(actor.uuid)}, {"uuid": str(actor2.uuid)}], + "inhoud": "inhoud", + "indicatieContactGelukt": True, + "taal": "taal", + "vertrouwelijk": True, + "plaatsgevondenOp": "2019-08-24T14:15:22Z", + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual( + data["gingOverOnderwerpobject"], + [ + { + "uuid": str(onderwerpobject.uuid), + "url": f"http://testserver/klantinteracties/api/v1/onderwerpobject/{str(onderwerpobject.uuid)}", + } + ], + ) + self.assertEqual( + data["omvatteBijlagen"], + [ + { + "uuid": str(bijlage.uuid), + "url": f"http://testserver/klantinteracties/api/v1/bijlage/{str(bijlage.uuid)}", + }, + ], + ) + self.assertTrue(data["hadBetrokkene"]) + self.assertTrue(data["leideTotInterneTaken"]) self.assertEqual(data["nummer"], "1234567890") self.assertEqual(data["kanaal"], "kanaal") self.assertEqual(data["onderwerp"], "onderwerp") @@ -121,6 +237,8 @@ def test_update_klantcontact(self): ) data = { + "gingOverOnderwerpobject": [], + "omvatteBijlagen": [], "nummer": "7948723947", "kanaal": "changed", "onderwerp": "changed", @@ -138,6 +256,124 @@ def test_update_klantcontact(self): data = response.json() + self.assertEqual(data["gingOverOnderwerpobject"], []) + self.assertEqual(data["omvatteBijlagen"], []) + self.assertEqual(data["nummer"], "7948723947") + self.assertEqual(data["kanaal"], "changed") + self.assertEqual(data["onderwerp"], "changed") + self.assertEqual(data["inhoud"], "changed") + self.assertEqual(data["taal"], "changed") + self.assertEqual(data["plaatsgevondenOp"], "2020-08-24T14:15:22Z") + self.assertFalse(data["indicatieContactGelukt"]) + self.assertFalse(data["vertrouwelijk"]) + self.assertEqual( + data["actoren"], + [ + { + "uuid": str(actor3.uuid), + "url": f"http://testserver/klantinteracties/api/v1/actoren/{str(actor3.uuid)}", + }, + { + "uuid": str(actor4.uuid), + "url": f"http://testserver/klantinteracties/api/v1/actoren/{str(actor4.uuid)}", + }, + ], + ) + + def test_update_klantcontact_with_reverse_lookup_fields(self): + actor, actor2, actor3, actor4 = ActorFactory.create_batch(4) + klantcontact = KlantcontactFactory.create( + nummer="1234567890", + kanaal="kanaal", + onderwerp="onderwerp", + actoren=[actor, actor2], + inhoud="inhoud", + indicatie_contact_gelukt=True, + taal="taal", + vertrouwelijk=True, + plaatsgevonden_op="2019-08-24T14:15:22Z", + ) + onderwerpobject = OnderwerpobjectFactory.create(klantcontact=klantcontact) + onderwerpobject2 = OnderwerpobjectFactory.create(klantcontact=None) + + bijlage = BijlageFactory.create(klantcontact=klantcontact) + bijlage2 = BijlageFactory.create(klantcontact=None) + + detail_url = reverse( + "klantcontact-detail", kwargs={"uuid": str(klantcontact.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual( + data["gingOverOnderwerpobject"][0]["uuid"], str(onderwerpobject.uuid) + ) + self.assertEqual(data["omvatteBijlagen"][0]["uuid"], str(bijlage.uuid)) + self.assertEqual(data["nummer"], "1234567890") + self.assertEqual(data["kanaal"], "kanaal") + self.assertEqual(data["onderwerp"], "onderwerp") + self.assertEqual(data["inhoud"], "inhoud") + self.assertEqual(data["taal"], "taal") + self.assertEqual(data["plaatsgevondenOp"], "2019-08-24T14:15:22Z") + self.assertTrue(data["indicatieContactGelukt"]) + self.assertTrue(data["vertrouwelijk"]) + self.assertEqual( + data["actoren"], + [ + { + "uuid": str(actor.uuid), + "url": f"http://testserver/klantinteracties/api/v1/actoren/{str(actor.uuid)}", + }, + { + "uuid": str(actor2.uuid), + "url": f"http://testserver/klantinteracties/api/v1/actoren/{str(actor2.uuid)}", + }, + ], + ) + + data = { + "gingOverOnderwerpobject": [ + {"uuid": str(onderwerpobject2.uuid)}, + ], + "omvatteBijlagen": [ + {"uuid": str(bijlage2.uuid)}, + ], + "nummer": "7948723947", + "kanaal": "changed", + "onderwerp": "changed", + "actoren": [{"uuid": str(actor3.uuid)}, {"uuid": str(actor4.uuid)}], + "inhoud": "changed", + "indicatieContactGelukt": False, + "taal": "changed", + "vertrouwelijk": False, + "plaatsgevondenOp": "2020-08-24T14:15:22Z", + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual( + data["gingOverOnderwerpobject"], + [ + { + "uuid": str(onderwerpobject2.uuid), + "url": f"http://testserver/klantinteracties/api/v1/onderwerpobject/{str(onderwerpobject2.uuid)}", + } + ], + ) + + self.assertEqual( + data["omvatteBijlagen"], + [ + { + "uuid": str(bijlage2.uuid), + "url": f"http://testserver/klantinteracties/api/v1/bijlage/{str(bijlage2.uuid)}", + }, + ], + ) self.assertEqual(data["nummer"], "7948723947") self.assertEqual(data["kanaal"], "changed") self.assertEqual(data["onderwerp"], "changed") @@ -179,6 +415,8 @@ def test_partial_update_klantcontact(self): response = self.client.get(detail_url) data = response.json() + self.assertEqual(data["gingOverOnderwerpobject"], []) + self.assertEqual(data["omvatteBijlagen"], []) self.assertEqual(data["nummer"], "1234567890") self.assertEqual(data["kanaal"], "kanaal") self.assertEqual(data["onderwerp"], "onderwerp") @@ -211,6 +449,8 @@ def test_partial_update_klantcontact(self): data = response.json() + self.assertEqual(data["gingOverOnderwerpobject"], []) + self.assertEqual(data["omvatteBijlagen"], []) self.assertEqual(data["nummer"], "7948723947") self.assertEqual(data["kanaal"], "kanaal") self.assertEqual(data["onderwerp"], "onderwerp") @@ -269,13 +509,113 @@ def test_read_betrokkene(self): self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_create_betrokkene(self): + def test_create_betrokkene_with_partij(self): klantcontact = KlantcontactFactory.create() digitaal_adres = DigitaalAdresFactory.create() list_url = reverse("betrokkene-list") data = { "klantcontact": {"uuid": str(klantcontact.uuid)}, - "digitaalAdres": {"uuid": str(digitaal_adres.uuid)}, + "partij": [ + { + "nummer": "8123818238", + "interneNotitie": "test123", + "digitaalAdres": { + "uuid": str(digitaal_adres.uuid), + }, + "voorkeursDigitaalAdres": None, + "vertegenwoordigde": [], + "soortPartij": "persoon", + "indicatieGeheimhouding": False, + "voorkeurstaal": "ndl", + "indicatieActief": True, + "bezoekadres": { + "nummeraanduidingId": "", + "adresregel1": "", + "adresregel2": "", + "adresregel3": "", + "land": "", + }, + "correspondentieadres": { + "nummeraanduidingId": "", + "adresregel1": "", + "adresregel2": "", + "adresregel3": "", + "land": "", + }, + } + ], + "bezoekadres": { + "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "adresregel1": "adres1", + "adresregel2": "adres2", + "adresregel3": "adres3", + "land": "6030", + }, + "correspondentieadres": { + "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "adresregel1": "adres1", + "adresregel2": "adres2", + "adresregel3": "adres3", + "land": "6030", + }, + "contactnaam": { + "voorletters": "P", + "voornaam": "Phil", + "voorvoegselAchternaam": "", + "achternaam": "Bozeman", + }, + "rol": "vertegenwoordiger", + "organisatienaam": "Whitechapel", + "initiator": True, + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["partij"][0]["nummer"], "8123818238") + self.assertEqual( + data["bezoekadres"], + { + "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "adresregel1": "adres1", + "adresregel2": "adres2", + "adresregel3": "adres3", + "land": "6030", + }, + ) + self.assertEqual( + data["correspondentieadres"], + { + "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "adresregel1": "adres1", + "adresregel2": "adres2", + "adresregel3": "adres3", + "land": "6030", + }, + ) + self.assertEqual( + data["contactnaam"], + { + "voorletters": "P", + "voornaam": "Phil", + "voorvoegselAchternaam": "", + "achternaam": "Bozeman", + }, + ) + self.assertEqual(data["rol"], "vertegenwoordiger") + self.assertEqual(data["organisatienaam"], "Whitechapel") + self.assertTrue(data["initiator"]) + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + + def test_create_betrokkene(self): + klantcontact = KlantcontactFactory.create() + list_url = reverse("betrokkene-list") + data = { + "klantcontact": {"uuid": str(klantcontact.uuid)}, + "partij": [], "bezoekadres": { "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", "adresregel1": "adres1", @@ -340,14 +680,11 @@ def test_create_betrokkene(self): self.assertEqual(data["organisatienaam"], "Whitechapel") self.assertTrue(data["initiator"]) self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) - self.assertEqual(data["digitaalAdres"]["uuid"], str(digitaal_adres.uuid)) def test_update_betrokkene(self): klantcontact, klantcontact2 = KlantcontactFactory.create_batch(2) - digitaal_adres, digitaal_adres2 = DigitaalAdresFactory.create_batch(2) betrokkene = BetrokkeneFactory.create( klantcontact=klantcontact, - digitaal_adres=digitaal_adres, bezoekadres_nummeraanduiding_id="4a282b5c-16d7-401d-9737-28e98c865ab2", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", @@ -403,11 +740,9 @@ def test_update_betrokkene(self): self.assertEqual(data["organisatienaam"], "Whitechapel") self.assertTrue(data["initiator"]) self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) - self.assertEqual(data["digitaalAdres"]["uuid"], str(digitaal_adres.uuid)) data = { "klantcontact": {"uuid": str(klantcontact2.uuid)}, - "digitaalAdres": {"uuid": str(digitaal_adres2.uuid)}, "bezoekadres": { "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", "adresregel1": "changed", @@ -472,14 +807,11 @@ def test_update_betrokkene(self): self.assertEqual(data["organisatienaam"], "changed") self.assertFalse(data["initiator"]) self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact2.uuid)) - self.assertEqual(data["digitaalAdres"]["uuid"], str(digitaal_adres2.uuid)) def test_partial_update_betrokkene(self): klantcontact = KlantcontactFactory.create() - digitaal_adres = DigitaalAdresFactory.create() betrokkene = BetrokkeneFactory.create( klantcontact=klantcontact, - digitaal_adres=digitaal_adres, bezoekadres_nummeraanduiding_id="4a282b5c-16d7-401d-9737-28e98c865ab2", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", @@ -535,7 +867,6 @@ def test_partial_update_betrokkene(self): self.assertEqual(data["organisatienaam"], "Whitechapel") self.assertTrue(data["initiator"]) self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) - self.assertEqual(data["digitaalAdres"]["uuid"], str(digitaal_adres.uuid)) data = { "bezoekadres": { @@ -586,7 +917,6 @@ def test_partial_update_betrokkene(self): self.assertEqual(data["organisatienaam"], "Whitechapel") self.assertTrue(data["initiator"]) self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) - self.assertEqual(data["digitaalAdres"]["uuid"], str(digitaal_adres.uuid)) def test_destroy_betrokkene(self): betrokkene = BetrokkeneFactory.create() @@ -598,3 +928,495 @@ def test_destroy_betrokkene(self): response = self.client.get(list_url) data = response.json() self.assertEqual(data["count"], 0) + + +class BijlageTests(JWTAuthMixin, APITestCase): + def test_list_bijlage(self): + list_url = reverse("bijlage-list") + BijlageFactory.create_batch(2) + + response = self.client.get(list_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + self.assertEqual(len(data["results"]), 2) + + def test_read_bijlage(self): + bijlage = BijlageFactory.create() + detail_url = reverse("bijlage-detail", kwargs={"uuid": str(bijlage.uuid)}) + + response = self.client.get(detail_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_create_bijlage(self): + list_url = reverse("bijlage-list") + data = { + "klantcontact": None, + "objectidentificator": { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["klantcontact"], None) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + with self.subTest("create_bijlage_with_klantcontact"): + klantcontact = KlantcontactFactory.create() + data = { + "klantcontact": {"uuid": str(klantcontact.uuid)}, + "objectidentificator": { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + } + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + def test_update_bijlage(self): + klantcontact, klantcontact2 = KlantcontactFactory.create_batch(2) + bijlage = BijlageFactory.create( + klantcontact=klantcontact, + objectidentificator_objecttype="objecttype", + objectidentificator_soort_object_id="soortObjectId", + objectidentificator_object_id="objectId", + objectidentificator_register="register", + ) + detail_url = reverse("bijlage-detail", kwargs={"uuid": str(bijlage.uuid)}) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + data = { + "klantcontact": {"uuid": str(klantcontact2.uuid)}, + "objectidentificator": { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact2.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + ) + + with self.subTest("unset_klantcontact"): + data = { + "klantcontact": None, + "objectidentificator": { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertIsNone(data["klantcontact"]) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + ) + + def test_partial_update_bijlage(self): + klantcontact = KlantcontactFactory.create() + bijlage = BijlageFactory.create( + klantcontact=klantcontact, + objectidentificator_objecttype="objecttype", + objectidentificator_soort_object_id="soortObjectId", + objectidentificator_object_id="objectId", + objectidentificator_register="register", + ) + detail_url = reverse("bijlage-detail", kwargs={"uuid": str(bijlage.uuid)}) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + data = { + "objectidentificator": { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + } + + response = self.client.patch(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + ) + + def test_destroy_bijlage(self): + bijlage = BijlageFactory.create() + detail_url = reverse("bijlage-detail", kwargs={"uuid": str(bijlage.uuid)}) + response = self.client.delete(detail_url) + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) + + list_url = reverse("bijlage-list") + response = self.client.get(list_url) + data = response.json() + self.assertEqual(data["count"], 0) + + +class OnderwerpobjectTests(JWTAuthMixin, APITestCase): + def test_list_onderwerpobject(self): + list_url = reverse("onderwerpobject-list") + OnderwerpobjectFactory.create_batch(2) + + response = self.client.get(list_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + self.assertEqual(len(data["results"]), 2) + + def test_read_onderwerpobject(self): + onderwerpobject = OnderwerpobjectFactory.create() + detail_url = reverse( + "onderwerpobject-detail", kwargs={"uuid": str(onderwerpobject.uuid)} + ) + + response = self.client.get(detail_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_create_onderwerpobject(self): + list_url = reverse("onderwerpobject-list") + data = { + "klantcontact": None, + "wasKlantcontact": None, + "objectidentificator": { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + } + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["klantcontact"], None) + self.assertEqual(data["wasKlantcontact"], None) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + with self.subTest("create_onderwerpobject_with_klantcontact"): + klantcontact2 = KlantcontactFactory.create() + data = { + "klantcontact": {"uuid": str(klantcontact2.uuid)}, + "wasKlantcontact": None, + "objectidentificator": { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + } + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact2.uuid)) + self.assertIsNone(data["wasKlantcontact"]) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + with self.subTest("create_onderwerpobject_with_was_klantcontact"): + klantcontact3 = KlantcontactFactory.create() + data = { + "klantcontact": None, + "wasKlantcontact": {"uuid": str(klantcontact3.uuid)}, + "objectidentificator": { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + } + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertIsNone(data["klantcontact"]) + self.assertEqual(data["wasKlantcontact"]["uuid"], str(klantcontact3.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + def test_update_onderwerpobject(self): + ( + klantcontact, + klantcontact2, + klantcontact3, + klantcontact4, + ) = KlantcontactFactory.create_batch(4) + onderwerpobject = OnderwerpobjectFactory.create( + klantcontact=klantcontact, + was_klantcontact=klantcontact3, + objectidentificator_objecttype="objecttype", + objectidentificator_soort_object_id="soortObjectId", + objectidentificator_object_id="objectId", + objectidentificator_register="register", + ) + detail_url = reverse( + "onderwerpobject-detail", kwargs={"uuid": str(onderwerpobject.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["wasKlantcontact"]["uuid"], str(klantcontact3.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + data = { + "klantcontact": {"uuid": str(klantcontact2.uuid)}, + "wasKlantcontact": {"uuid": str(klantcontact4.uuid)}, + "objectidentificator": { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact2.uuid)) + self.assertEqual(data["wasKlantcontact"]["uuid"], str(klantcontact4.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + ) + + with self.subTest("unset_klantcontact"): + data = { + "klantcontact": None, + "wasKlantcontact": None, + "objectidentificator": { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + } + + response = self.client.put(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertIsNone(data["klantcontact"]) + self.assertIsNone(data["wasKlantcontact"]) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + ) + + def test_partial_update_onderwerpobject(self): + klantcontact, klantcontact2 = KlantcontactFactory.create_batch(2) + onderwerpobject = OnderwerpobjectFactory.create( + klantcontact=klantcontact, + was_klantcontact=klantcontact2, + objectidentificator_objecttype="objecttype", + objectidentificator_soort_object_id="soortObjectId", + objectidentificator_object_id="objectId", + objectidentificator_register="register", + ) + detail_url = reverse( + "onderwerpobject-detail", kwargs={"uuid": str(onderwerpobject.uuid)} + ) + response = self.client.get(detail_url) + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["wasKlantcontact"]["uuid"], str(klantcontact2.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "objecttype", + "soortObjectId": "soortObjectId", + "objectId": "objectId", + "register": "register", + }, + ) + + data = { + "objectidentificator": { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + } + + response = self.client.patch(detail_url, data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + + self.assertEqual(data["klantcontact"]["uuid"], str(klantcontact.uuid)) + self.assertEqual(data["wasKlantcontact"]["uuid"], str(klantcontact2.uuid)) + self.assertEqual( + data["objectidentificator"], + { + "objecttype": "changed", + "soortObjectId": "changed", + "objectId": "changed", + "register": "changed", + }, + ) + + def test_destroy_onderwerpobject(self): + onderwerpobject = OnderwerpobjectFactory.create() + detail_url = reverse( + "onderwerpobject-detail", kwargs={"uuid": str(onderwerpobject.uuid)} + ) + response = self.client.delete(detail_url) + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) + + list_url = reverse("onderwerpobject-list") + response = self.client.get(list_url) + data = response.json() + self.assertEqual(data["count"], 0) diff --git a/src/openklant/components/klantinteracties/api/tests/test_partijen.py b/src/openklant/components/klantinteracties/api/tests/test_partijen.py index 4ef8ffd5..956fbe1e 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_partijen.py +++ b/src/openklant/components/klantinteracties/api/tests/test_partijen.py @@ -110,6 +110,49 @@ def test_create_partij(self): }, ) + with self.subTest("create_partij_without_foreignkey_relations"): + data["betrokkene"] = None + data["digitaalAdres"] = None + data["voorkeursDigitaalAdres"] = None + data["vertegenwoordigde"] = [] + + response = self.client.post(list_url, data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + data = response.json() + + self.assertEqual(data["nummer"], "1298329191") + self.assertEqual(data["interneNotitie"], "interneNotitie") + self.assertIsNone(data["betrokkene"]) + self.assertIsNone(data["digitaalAdres"]) + self.assertIsNone(data["voorkeursDigitaalAdres"]) + self.assertEqual(data["vertegenwoordigde"], []) + self.assertEqual(data["soortPartij"], "persoon") + self.assertTrue(data["indicatieGeheimhouding"]) + self.assertEqual(data["voorkeurstaal"], "ndl") + self.assertTrue(data["indicatieActief"]) + self.assertEqual( + data["bezoekadres"], + { + "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "adresregel1": "adres1", + "adresregel2": "adres2", + "adresregel3": "adres3", + "land": "6030", + }, + ) + self.assertEqual( + data["correspondentieadres"], + { + "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "adresregel1": "adres1", + "adresregel2": "adres2", + "adresregel3": "adres3", + "land": "6030", + }, + ) + def test_update_parij(self): vertegenwoordigde, vertegenwoordigde2 = PartijFactory.create_batch(2) betrokkene, betrokkene2 = BetrokkeneFactory.create_batch(2) @@ -246,6 +289,69 @@ def test_update_parij(self): }, ) + with self.subTest("set_foreignkey_fields_to_none"): + data = { + "nummer": "6427834668", + "interneNotitie": "changed", + "betrokkene": None, + "digitaalAdres": None, + "voorkeursDigitaalAdres": None, + "vertegenwoordigde": [], + "soortPartij": "organisatie", + "indicatieGeheimhouding": False, + "voorkeurstaal": "ger", + "indicatieActief": False, + "bezoekadres": { + "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "adresregel1": "changed", + "adresregel2": "changed", + "adresregel3": "changed", + "land": "3060", + }, + "correspondentieadres": { + "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "adresregel1": "changed", + "adresregel2": "changed", + "adresregel3": "changed", + "land": "3060", + }, + } + + response = self.client.put(detail_url, data) + self.assertEqual(response.status_code, status.HTTP_200_OK) + data = response.json() + + self.assertEqual(data["nummer"], "6427834668") + self.assertEqual(data["interneNotitie"], "changed") + self.assertIsNone(data["betrokkene"]) + self.assertIsNone(data["digitaalAdres"]) + self.assertIsNone(data["voorkeursDigitaalAdres"]) + self.assertEqual(data["vertegenwoordigde"], []) + self.assertEqual(data["soortPartij"], "organisatie") + self.assertFalse(data["indicatieGeheimhouding"]) + self.assertEqual(data["voorkeurstaal"], "ger") + self.assertFalse(data["indicatieActief"]) + self.assertEqual( + data["bezoekadres"], + { + "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "adresregel1": "changed", + "adresregel2": "changed", + "adresregel3": "changed", + "land": "3060", + }, + ) + self.assertEqual( + data["correspondentieadres"], + { + "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "adresregel1": "changed", + "adresregel2": "changed", + "adresregel3": "changed", + "land": "3060", + }, + ) + def test_partial_update_parij(self): vertegenwoordigde = PartijFactory.create() betrokkene = BetrokkeneFactory.create() @@ -395,6 +501,7 @@ def test_create_organisatie(self): list_url = reverse("organisatie-list") data = { "partij": {"uuid": str(partij.uuid)}, + "contactpersoon": [], "naam": "whitechapel", } @@ -403,12 +510,37 @@ def test_create_organisatie(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij.uuid)) + self.assertEqual(data["contactpersoon"], []) self.assertEqual(data["naam"], "whitechapel") - # TODO: write subtest test to test if partij's unique is true validation works propperly + with self.subTest("check_if_partij_unique_validation_works"): + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "partij.uuid") + + def test_create_organisatie_with_contact_personen(self): + contactpersoon = ContactpersoonFactory.create(organisatie=None) + partij = PartijFactory.create() + + list_url = reverse("organisatie-list") + data = { + "partij": {"uuid": str(partij.uuid)}, + "contactpersoon": [{"id": contactpersoon.id}], + "naam": "whitechapel", + } + + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + data = response.json() + + self.assertEqual(data["partij"]["uuid"], str(partij.uuid)) + self.assertEqual(data["contactpersoon"][0]["id"], contactpersoon.id) + self.assertEqual(data["naam"], "whitechapel") def test_update_organisatie(self): partij, partij2 = PartijFactory.create_batch(2) + contactpersoon = ContactpersoonFactory.create() organisatie = OrganisatieFactory.create(partij=partij, naam="whitechapel") detail_url = reverse("organisatie-detail", kwargs={"id": organisatie.id}) @@ -421,6 +553,7 @@ def test_update_organisatie(self): data = { "partij": {"uuid": str(partij2.uuid)}, + "contactpersoon": [{"id": contactpersoon.id}], "naam": "changed", } @@ -429,9 +562,29 @@ def test_update_organisatie(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij2.uuid)) + self.assertEqual(data["contactpersoon"][0]["id"], contactpersoon.id) self.assertEqual(data["naam"], "changed") - # TODO: write subtest test to test if partij's unique is true validation works propperly + with self.subTest("check_if_changing_contactpersonen_removes_relation"): + data = { + "contactpersoon": [], + } + + response = self.client.patch(detail_url, data) + self.assertEqual(response.status_code, status.HTTP_200_OK) + data = response.json() + self.assertEqual(data["contactpersoon"], []) + + with self.subTest("check_if_partij_unique_validation_works"): + OrganisatieFactory.create(partij=partij) + data = { + "partij": {"uuid": str(partij.uuid)}, + } + + response = self.client.patch(detail_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "partij.uuid") def test_partial_update_organisatie(self): partij = PartijFactory.create() @@ -516,7 +669,11 @@ def test_create_persoon(self): }, ) - # TODO: write subtest test to test if partij's unique is true validation works propperly + with self.subTest("check_if_partij_unique_validation_works"): + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "partij.uuid") def test_update_persoon(self): partij, partij2 = PartijFactory.create_batch(2) @@ -569,7 +726,13 @@ def test_update_persoon(self): }, ) - # TODO: write subtest test to test if partij's unique is true validation works propperly + with self.subTest("check_if_partij_unique_validation_works"): + persoon2 = PersoonFactory.create() + new_detail_url = reverse("persoon-detail", kwargs={"id": persoon2.id}) + response = self.client.put(new_detail_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "partij.uuid") def test_partial_update_persoon(self): partij = PartijFactory.create() @@ -661,7 +824,7 @@ def test_create_contact_persoon(self): list_url = reverse("contactpersoon-list") data = { "partij": {"uuid": str(partij.uuid)}, - "organisatie": {"id": str(organisatie.id)}, + "werkte_voor_organisatie": {"id": str(organisatie.id)}, "contactnaam": { "voorletters": "P", "voornaam": "Phil", @@ -675,7 +838,7 @@ def test_create_contact_persoon(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij.uuid)) - self.assertEqual(data["organisatie"]["id"], organisatie.id) + self.assertEqual(data["werkteVoorOrganisatie"]["id"], organisatie.id) self.assertEqual( data["contactnaam"], { @@ -686,7 +849,11 @@ def test_create_contact_persoon(self): }, ) - # TODO: write subtest test to test if partij's unique is true validation works propperly + with self.subTest("check_if_partij_unique_validation_works"): + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "partij.uuid") def test_update_contact_persoon(self): partij, partij2 = PartijFactory.create_batch(2) @@ -706,7 +873,7 @@ def test_update_contact_persoon(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij.uuid)) - self.assertEqual(data["organisatie"]["id"], organisatie.id) + self.assertEqual(data["werkteVoorOrganisatie"]["id"], organisatie.id) self.assertEqual( data["contactnaam"], { @@ -719,7 +886,7 @@ def test_update_contact_persoon(self): data = { "partij": {"uuid": str(partij2.uuid)}, - "organisatie": {"id": organisatie2.id}, + "werkteVoorOrganisatie": {"id": organisatie2.id}, "contactnaam": { "voorletters": "changed", "voornaam": "changed", @@ -733,7 +900,7 @@ def test_update_contact_persoon(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij2.uuid)) - self.assertEqual(data["organisatie"]["id"], organisatie2.id) + self.assertEqual(data["werkteVoorOrganisatie"]["id"], organisatie2.id) self.assertEqual( data["contactnaam"], { @@ -744,7 +911,15 @@ def test_update_contact_persoon(self): }, ) - # TODO: write subtest test to test if partij's unique is true validation works propperly + with self.subTest("check_if_partij_unique_validation_works"): + contact_persoon2 = ContactpersoonFactory.create() + new_detail_url = reverse( + "contactpersoon-detail", kwargs={"id": contact_persoon2.id} + ) + response = self.client.put(new_detail_url, data) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + data = response.json() + self.assertEqual(data["invalidParams"][0]["name"], "partij.uuid") def test_partial_update_contact_persoon(self): partij = PartijFactory.create() @@ -764,7 +939,7 @@ def test_partial_update_contact_persoon(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij.uuid)) - self.assertEqual(data["organisatie"]["id"], organisatie.id) + self.assertEqual(data["werkteVoorOrganisatie"]["id"], organisatie.id) self.assertEqual( data["contactnaam"], { @@ -789,7 +964,7 @@ def test_partial_update_contact_persoon(self): data = response.json() self.assertEqual(data["partij"]["uuid"], str(partij.uuid)) - self.assertEqual(data["organisatie"]["id"], organisatie.id) + self.assertEqual(data["werkteVoorOrganisatie"]["id"], organisatie.id) self.assertEqual( data["contactnaam"], { diff --git a/src/openklant/components/klantinteracties/api/urls.py b/src/openklant/components/klantinteracties/api/urls.py index 53ae9efc..3a9ea0da 100644 --- a/src/openklant/components/klantinteracties/api/urls.py +++ b/src/openklant/components/klantinteracties/api/urls.py @@ -18,7 +18,9 @@ ) from openklant.components.klantinteracties.api.viewsets.klantcontacten import ( BetrokkeneViewSet, + BijlageViewSet, KlantcontactViewSet, + OnderwerpobjectViewSet, ) from openklant.components.klantinteracties.api.viewsets.partijen import ( ContactpersoonViewSet, @@ -40,6 +42,8 @@ router.register("klantcontact", KlantcontactViewSet) router.register("betrokkene", BetrokkeneViewSet) +router.register("onderwerpobject", OnderwerpobjectViewSet) +router.register("bijlage", BijlageViewSet) router.register("interne_taak", InterneTaakViewSet) diff --git a/src/openklant/components/klantinteracties/api/validators.py b/src/openklant/components/klantinteracties/api/validators.py index 8c622570..dac22358 100644 --- a/src/openklant/components/klantinteracties/api/validators.py +++ b/src/openklant/components/klantinteracties/api/validators.py @@ -4,11 +4,18 @@ from openklant.components.klantinteracties.models.actoren import Actor from openklant.components.klantinteracties.models.digitaal_adres import DigitaalAdres +from openklant.components.klantinteracties.models.internetaken import InterneTaak from openklant.components.klantinteracties.models.klantcontacten import ( Betrokkene, + Bijlage, Klantcontact, + Onderwerpobject, +) +from openklant.components.klantinteracties.models.partijen import ( + Contactpersoon, + Organisatie, + Partij, ) -from openklant.components.klantinteracties.models.partijen import Organisatie, Partij def actor_exists(value): @@ -25,6 +32,20 @@ def betrokkene_exists(value): raise serializers.ValidationError(_("Betrokkene object doesn't exist.")) +def bijlage_exists(value): + try: + Bijlage.objects.get(uuid=str(value)) + except Bijlage.DoesNotExist: + raise serializers.ValidationError(_("Bijlage object doesn't exist.")) + + +def contactpersoon_exists(value): + try: + Contactpersoon.objects.get(id=int(value)) + except Contactpersoon.DoesNotExist: + raise serializers.ValidationError(_("Contactpersoon object doesn't exist.")) + + def digitaal_adres_exists(value): try: DigitaalAdres.objects.get(uuid=str(value)) @@ -32,6 +53,13 @@ def digitaal_adres_exists(value): raise serializers.ValidationError(_("DigitaalAdres object doesn't exist.")) +def internetaak_exists(value): + try: + InterneTaak.objects.get(uuid=str(value)) + except InterneTaak.DoesNotExist: + raise serializers.ValidationError(_("InterneTaak object doesn't exist.")) + + def klantcontact_exists(value): try: Klantcontact.objects.get(uuid=str(value)) @@ -39,6 +67,13 @@ def klantcontact_exists(value): raise serializers.ValidationError(_("Klantcontact object doesn't exist.")) +def onderwerpobject_exists(value): + try: + Onderwerpobject.objects.get(uuid=(str(value))) + except Onderwerpobject.DoesNotExist: + raise serializers.ValidationError(_("Onderwerpobject object doesn't exist.")) + + def organisatie_exists(value): try: Organisatie.objects.get(id=int(value)) diff --git a/src/openklant/components/klantinteracties/api/viewsets/actoren.py b/src/openklant/components/klantinteracties/api/viewsets/actoren.py index d133fd23..ad483cfb 100644 --- a/src/openklant/components/klantinteracties/api/viewsets/actoren.py +++ b/src/openklant/components/klantinteracties/api/viewsets/actoren.py @@ -1,3 +1,4 @@ +from django_filters.rest_framework import DjangoFilterBackend from rest_framework import viewsets from rest_framework.pagination import PageNumberPagination @@ -54,40 +55,36 @@ class ActorViewSet(viewsets.ModelViewSet): serializer_class = ActorSerializer lookup_field = "uuid" pagination_class = PageNumberPagination + filter_backends = [DjangoFilterBackend] + filterset_fields = [ + "soort_actor", + "indicatie_actief", + "objectidentificator_objecttype", + "objectidentificator_soort_object_id", + "objectidentificator_object_id", + ] class GeautomatiseerdeActorViewSet(viewsets.ModelViewSet): """ Functie van de geautomatiseerde actor of beschrijving van de werkzaamheden die deze uitvoert. - create: Maak een geautomatiseerde actor aan. - Maak een geautomatiseerde actor aan. - list: Alle geautomatiseerde actoren opvragen. - Alle geautomatiseerde actoren opvragen. - retrieve: Een specifiek geautomatiseerde actor opvragen. - Een specifiek geautomatiseerde actor opvragen. - update: Werk een geautomatiseerde actor in zijn geheel bij. - Werk een geautomatiseerde actor in zijn geheel bij. - partial_update: Werk een geautomatiseerde actor deels bij. - Werk een geautomatiseerde actor deels bij. - destroy: Verwijder een geautomatiseerde actor. - Verwijder een geautomatiseerde actor. """ @@ -101,35 +98,23 @@ class MedewerkerViewSet(viewsets.ModelViewSet): """ Een MEDEWERKER van de organisatie die zaken behandelt uit hoofde van zijn of haar functie binnen een ORGANISATORISCHE EENHEID. - create: Maak een medewerker aan. - Maak een medewerker aan. - list: Alle medewerkers opvragen. - Alle medewerkers opvragen. - retrieve: Een specifiek medewerker opvragen. - Een specifiek medewerker opvragen. - update: Werk een medewerker in zijn geheel bij. - Werk een medewerker in zijn geheel bij. - partial_update: Werk een medewerker deels bij. - Werk een medewerker deels bij. - destroy: Verwijder een medewerker. - Verwijder een medewerker. """ @@ -144,35 +129,23 @@ class OrganisatorischeEenheidViewSet(viewsets.ModelViewSet): Het deel van een functioneel afgebakend onderdeel binnen de organisatie dat haar activiteiten uitvoert binnen een VESTIGING VAN ZAAKBEHANDELENDE ORGANISATIE en die verantwoordelijk is voor de behandeling van zaken. - create: Maak een organisatorische eenheid aan. - Maak een organisatorische eenheid aan. - list: Alle organisatorische eenheid opvragen. - Alle organisatorische eenheid opvragen. - retrieve: Een specifiek organisatorische eenheid opvragen. - Een specifiek organisatorische eenheid opvragen. - update: Werk een organisatorische eenheid in zijn geheel bij. - Werk een organisatorische eenheid in zijn geheel bij. - partial_update: Werk een organisatorische eenheid deels bij. - Werk een organisatorische eenheid deels bij. - destroy: Verwijder een organisatorische eenheid. - Verwijder een organisatorische eenheid. """ diff --git a/src/openklant/components/klantinteracties/api/viewsets/internetaken.py b/src/openklant/components/klantinteracties/api/viewsets/internetaken.py index 39d12600..2892cf9b 100644 --- a/src/openklant/components/klantinteracties/api/viewsets/internetaken.py +++ b/src/openklant/components/klantinteracties/api/viewsets/internetaken.py @@ -1,3 +1,4 @@ +from django_filters.rest_framework import DjangoFilterBackend from rest_framework import viewsets from rest_framework.pagination import PageNumberPagination @@ -46,3 +47,11 @@ class InterneTaakViewSet(viewsets.ModelViewSet): serializer_class = InterneTaakSerializer lookup_field = "uuid" pagination_class = PageNumberPagination + filter_backends = [DjangoFilterBackend] + filterset_fields = [ + "nummer", + "status", + "actor__naam", + "klantcontact__uuid", + "klantcontact__nummer", + ] diff --git a/src/openklant/components/klantinteracties/api/viewsets/klantcontacten.py b/src/openklant/components/klantinteracties/api/viewsets/klantcontacten.py index c3f6e483..c86411c0 100644 --- a/src/openklant/components/klantinteracties/api/viewsets/klantcontacten.py +++ b/src/openklant/components/klantinteracties/api/viewsets/klantcontacten.py @@ -1,13 +1,22 @@ +from django_filters.rest_framework import DjangoFilterBackend from rest_framework import viewsets from rest_framework.pagination import PageNumberPagination +from openklant.components.klantinteracties.api.filterset.klantcontacten import ( + BetrokkeneFilterSet, + KlantcontactFilterSet, +) from openklant.components.klantinteracties.api.serializers.klantcontacten import ( BetrokkeneSerializer, + BijlageSerializer, KlantcontactSerializer, + OnderwerpobjectSerializer, ) from openklant.components.klantinteracties.models.klantcontacten import ( Betrokkene, + Bijlage, Klantcontact, + Onderwerpobject, ) @@ -51,6 +60,7 @@ class KlantcontactViewSet(viewsets.ModelViewSet): serializer_class = KlantcontactSerializer lookup_field = "uuid" pagination_class = PageNumberPagination + filterset_class = KlantcontactFilterSet class BetrokkeneViewSet(viewsets.ModelViewSet): @@ -95,3 +105,30 @@ class BetrokkeneViewSet(viewsets.ModelViewSet): serializer_class = BetrokkeneSerializer lookup_field = "uuid" pagination_class = PageNumberPagination + filterset_class = BetrokkeneFilterSet + + +class OnderwerpobjectViewSet(viewsets.ModelViewSet): + queryset = Onderwerpobject.objects.order_by("-pk") + serializer_class = OnderwerpobjectSerializer + lookup_field = "uuid" + pagination_class = PageNumberPagination + filter_backends = [DjangoFilterBackend] + filterset_fields = [ + "objectidentificator_objecttype", + "objectidentificator_soort_object_id", + "objectidentificator_object_id", + ] + + +class BijlageViewSet(viewsets.ModelViewSet): + queryset = Bijlage.objects.order_by("-pk") + serializer_class = BijlageSerializer + lookup_field = "uuid" + pagination_class = PageNumberPagination + filter_backends = [DjangoFilterBackend] + filterset_fields = [ + "objectidentificator_objecttype", + "objectidentificator_soort_object_id", + "objectidentificator_object_id", + ] diff --git a/src/openklant/components/klantinteracties/migrations/0004_auto_20231110_0735.py b/src/openklant/components/klantinteracties/migrations/0004_auto_20231110_0735.py new file mode 100644 index 00000000..393ecffa --- /dev/null +++ b/src/openklant/components/klantinteracties/migrations/0004_auto_20231110_0735.py @@ -0,0 +1,40 @@ +# Generated by Django 3.2.18 on 2023-11-10 07:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + ("klantinteracties", "0003_partijidentificator"), + ] + + operations = [ + migrations.RemoveField( + model_name="betrokkene", + name="digitaal_adres", + ), + migrations.AddField( + model_name="digitaaladres", + name="betrokkene", + field=models.ForeignKey( + help_text="'Digitaal Adres' had 'Betrokkene bij klantcontact'", + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="klantinteracties.betrokkene", + verbose_name="betrokkene", + ), + ), + migrations.AlterField( + model_name="medewerker", + name="actor", + field=models.ForeignKey( + help_text="'GeautomatiseerdeActor' was 'Actor'", + on_delete=django.db.models.deletion.CASCADE, + related_name="medewerker", + to="klantinteracties.actor", + unique=True, + verbose_name="actor", + ), + ), + ] diff --git a/src/openklant/components/klantinteracties/models/actoren.py b/src/openklant/components/klantinteracties/models/actoren.py index 2252c889..9068117b 100644 --- a/src/openklant/components/klantinteracties/models/actoren.py +++ b/src/openklant/components/klantinteracties/models/actoren.py @@ -76,6 +76,8 @@ class Medewerker(models.Model): on_delete=models.CASCADE, verbose_name=_("actor"), help_text=_("'GeautomatiseerdeActor' was 'Actor'"), + related_name="medewerker", + unique=True, ) functie = models.CharField( _("functie"), diff --git a/src/openklant/components/klantinteracties/models/digitaal_adres.py b/src/openklant/components/klantinteracties/models/digitaal_adres.py index aecaa247..0267ef33 100644 --- a/src/openklant/components/klantinteracties/models/digitaal_adres.py +++ b/src/openklant/components/klantinteracties/models/digitaal_adres.py @@ -3,6 +3,8 @@ from django.db import models from django.utils.translation import gettext_lazy as _ +from openklant.components.klantinteracties.models.klantcontacten import Betrokkene + class DigitaalAdres(models.Model): uuid = models.UUIDField( @@ -10,6 +12,13 @@ class DigitaalAdres(models.Model): default=uuid.uuid4, help_text=_("Unieke (technische) identificatiecode van het digitaal adres."), ) + betrokkene = models.ForeignKey( + Betrokkene, + on_delete=models.CASCADE, + verbose_name=_("betrokkene"), + help_text=_("'Digitaal Adres' had 'Betrokkene bij klantcontact'"), + null=True, + ) soort_digitaal_adres = models.CharField( _("soort digitaal adres"), help_text=_( diff --git a/src/openklant/components/klantinteracties/models/klantcontacten.py b/src/openklant/components/klantinteracties/models/klantcontacten.py index e54c8c16..911238a3 100644 --- a/src/openklant/components/klantinteracties/models/klantcontacten.py +++ b/src/openklant/components/klantinteracties/models/klantcontacten.py @@ -7,7 +7,6 @@ from .actoren import Actor from .constants import Klantcontrol -from .digitaal_adres import DigitaalAdres from .mixins import ( BezoekadresMixin, ContactnaamMixin, @@ -111,13 +110,6 @@ class Betrokkene(BezoekadresMixin, CorrespondentieadresMixin, ContactnaamMixin): verbose_name=_("klantcontact"), help_text=_("'Klantcontact' had 'Betrokkene bij klantcontact'"), ) - digitaal_adres = models.ForeignKey( - DigitaalAdres, - on_delete=models.CASCADE, - verbose_name=_("digitaal adres"), - help_text=_("'Digitaal Adres' had 'Betrokkene bij klantcontact'"), - null=True, - ) rol = models.CharField( _("rol"), help_text=_( diff --git a/src/openklant/components/klantinteracties/models/tests/factories/digitaal_adres.py b/src/openklant/components/klantinteracties/models/tests/factories/digitaal_adres.py index f6b91851..82865036 100644 --- a/src/openklant/components/klantinteracties/models/tests/factories/digitaal_adres.py +++ b/src/openklant/components/klantinteracties/models/tests/factories/digitaal_adres.py @@ -1,10 +1,14 @@ import factory from openklant.components.klantinteracties.models.digitaal_adres import DigitaalAdres +from openklant.components.klantinteracties.models.tests.factories.klantcontacten import ( + BetrokkeneFactory, +) class DigitaalAdresFactory(factory.django.DjangoModelFactory): uuid = factory.Faker("uuid4") + betrokkene = factory.SubFactory(BetrokkeneFactory) soort_digitaal_adres = factory.Faker("word") adres = factory.Faker("word") omschrijving = factory.Faker("word") diff --git a/src/openklant/components/klantinteracties/models/tests/factories/internetaken.py b/src/openklant/components/klantinteracties/models/tests/factories/internetaken.py new file mode 100644 index 00000000..a33d725e --- /dev/null +++ b/src/openklant/components/klantinteracties/models/tests/factories/internetaken.py @@ -0,0 +1,26 @@ +import random + +import factory.fuzzy + +from openklant.components.klantinteracties.models.constants import Taakstatus +from openklant.components.klantinteracties.models.internetaken import InterneTaak +from openklant.components.klantinteracties.models.tests.factories.actoren import ( + ActorFactory, +) +from openklant.components.klantinteracties.models.tests.factories.klantcontacten import ( + KlantcontactFactory, +) + + +class InterneTaakFactory(factory.django.DjangoModelFactory): + uuid = factory.Faker("uuid4") + actor = factory.SubFactory(ActorFactory) + klantcontact = factory.SubFactory(KlantcontactFactory) + nummer = "".join(random.choice("0123456789") for i in range(10)) + gevraagde_handeling = factory.Faker("word") + toelichting = factory.Faker("word") + status = factory.fuzzy.FuzzyChoice(Taakstatus.values) + toegewezen_op = factory.Faker("date_object") + + class Meta: + model = InterneTaak diff --git a/src/openklant/components/klantinteracties/models/tests/factories/klantcontacten.py b/src/openklant/components/klantinteracties/models/tests/factories/klantcontacten.py index 3a4776ca..4e5d97f1 100644 --- a/src/openklant/components/klantinteracties/models/tests/factories/klantcontacten.py +++ b/src/openklant/components/klantinteracties/models/tests/factories/klantcontacten.py @@ -3,12 +3,8 @@ import factory.fuzzy -from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import ( - DigitaalAdresFactory, -) - from ...constants import Klantcontrol -from ...klantcontacten import Betrokkene, Klantcontact +from ...klantcontacten import Betrokkene, Bijlage, Klantcontact, Onderwerpobject class KlantcontactFactory(factory.django.DjangoModelFactory): @@ -37,7 +33,6 @@ def actoren(self, create, extracted, **kwargs): class BetrokkeneFactory(factory.django.DjangoModelFactory): uuid = factory.Faker("uuid4") klantcontact = factory.SubFactory(KlantcontactFactory) - digitaal_adres = factory.SubFactory(DigitaalAdresFactory) rol = factory.fuzzy.FuzzyChoice(Klantcontrol.values) organisatienaam = factory.Faker("word") initiator = factory.Faker("pybool") @@ -45,3 +40,20 @@ class BetrokkeneFactory(factory.django.DjangoModelFactory): class Meta: model = Betrokkene + + +class OnderwerpobjectFactory(factory.django.DjangoModelFactory): + uuid = factory.Faker("uuid4") + klantcontact = factory.SubFactory(KlantcontactFactory) + was_klantcontact = factory.SubFactory(KlantcontactFactory) + + class Meta: + model = Onderwerpobject + + +class BijlageFactory(factory.django.DjangoModelFactory): + uuid = factory.Faker("uuid4") + klantcontact = factory.SubFactory(KlantcontactFactory) + + class Meta: + model = Bijlage diff --git a/src/openklant/components/klantinteracties/openapi.yaml b/src/openklant/components/klantinteracties/openapi.yaml index 73391c2e..e3b563d6 100644 --- a/src/openklant/components/klantinteracties/openapi.yaml +++ b/src/openklant/components/klantinteracties/openapi.yaml @@ -22,6 +22,44 @@ paths: summary: Alle actoren opvragen. description: Alle actoren opvragen. parameters: + - name: soortActor + in: query + description: Geeft aan van welke specifieke soort actor sprake is. + required: false + schema: + type: string + enum: + - medewerker + - geautomatiseerde_actor + - organisatorische_eenheid + - name: indicatieActief + in: query + description: Geeft aan of aan de actor nog betrokken mag worden bij nieuwe + klantcontacten. Voor niet-actieve is dit niet toegestaan. + required: false + schema: + type: string + - name: objectidentificatorObjecttype + in: query + description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK + PERSOON''.' + required: false + schema: + type: string + - name: objectidentificatorSoortObjectId + in: query + description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld: + ''Burgerservicenummer''.' + required: false + schema: + type: string + - name: objectidentificatorObjectId + in: query + description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld: + ''123456788''.' + required: false + schema: + type: string - name: page in: query description: Een pagina binnen de gepagineerde set resultaten. @@ -59,6 +97,8 @@ paths: type: array items: $ref: '#/components/schemas/Actor' + '400': + $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': @@ -316,6 +356,55 @@ paths: summary: Alle betrokkeneen opvragen. description: Alle betrokkeneen opvragen. parameters: + - name: klantcontact__nummer + in: query + description: Uniek identificerend nummer dat tijdens communicatie tussen mensen + kan worden gebruikt om het specifieke klantcontact aan te duiden. + required: false + schema: + type: string + - name: klantcontact__uuid + in: query + description: Unieke (technische) identificatiecode van de betrokkene bij klantcontact. + required: false + schema: + type: string + - name: klantcontact__url + in: query + description: Zoek betrokkene object op basis van het klantcontact url + required: false + schema: + type: string + - name: verstrektedigitaalAdres__adres + in: query + description: Zoek betrokkene object op basis van het klantcontact adres + required: false + schema: + type: string + - name: verstrektedigitaalAdres__uuid + in: query + description: Zoek betrokkene object op basis van het klantcontact uuid + required: false + schema: + type: string + - name: verstrektedigitaalAdres__url + in: query + description: Zoek betrokkene object op basis van het klantcontact url + required: false + schema: + type: string + - name: wasPartij__nummer + in: query + description: Zoek betrokkene object op basis van het partij nummer + required: false + schema: + type: string + - name: wasPartij__url + in: query + description: Zoek betrokkene object op basis van het partij url + required: false + schema: + type: string - name: page in: query description: Een pagina binnen de gepagineerde set resultaten. @@ -353,6 +442,8 @@ paths: type: array items: $ref: '#/components/schemas/Betrokkene' + '400': + $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': @@ -604,12 +695,32 @@ paths: schema: type: string format: uuid - /contact_persoon: + /bijlage: get: - operationId: contactpersoon_list - summary: Alle contactpersonen opvragen. - description: Alle contactpersonen opvragen. + operationId: bijlage_list + description: '' parameters: + - name: objectidentificatorObjecttype + in: query + description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK + PERSOON''.' + required: false + schema: + type: string + - name: objectidentificatorSoortObjectId + in: query + description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld: + ''Burgerservicenummer''.' + required: false + schema: + type: string + - name: objectidentificatorObjectId + in: query + description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld: + ''123456788''.' + required: false + schema: + type: string - name: page in: query description: Een pagina binnen de gepagineerde set resultaten. @@ -646,7 +757,9 @@ paths: results: type: array items: - $ref: '#/components/schemas/Contactpersoon' + $ref: '#/components/schemas/Bijlage' + '400': + $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': @@ -664,11 +777,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - contact_persoon + - bijlage post: - operationId: contactpersoon_create - summary: Maak een contactpersoon aan. - description: Maak een contactpersoon aan. + operationId: bijlage_create + description: '' parameters: - name: Content-Type in: header @@ -679,7 +791,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Contactpersoon' + $ref: '#/components/requestBodies/Bijlage' responses: '201': description: Created @@ -697,7 +809,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Contactpersoon' + $ref: '#/components/schemas/Bijlage' '400': $ref: '#/components/responses/400' '401': @@ -717,13 +829,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - contact_persoon + - bijlage parameters: [] - /contact_persoon/{id}: + /bijlage/{uuid}: get: - operationId: contactpersoon_read - summary: Een specifiek contactpersoon opvragen. - description: Een specifiek contactpersoon opvragen. + operationId: bijlage_read + description: '' responses: '200': description: OK @@ -736,7 +847,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Contactpersoon' + $ref: '#/components/schemas/Bijlage' '401': $ref: '#/components/responses/401' '403': @@ -756,11 +867,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - contact_persoon + - bijlage put: - operationId: contactpersoon_update - summary: Werk een contactpersoon in zijn geheel bij. - description: Werk een contactpersoon in zijn geheel bij. + operationId: bijlage_update + description: '' parameters: - name: Content-Type in: header @@ -771,7 +881,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Contactpersoon' + $ref: '#/components/requestBodies/Bijlage' responses: '200': description: OK @@ -784,7 +894,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Contactpersoon' + $ref: '#/components/schemas/Bijlage' '400': $ref: '#/components/responses/400' '401': @@ -806,11 +916,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - contact_persoon + - bijlage patch: - operationId: contactpersoon_partial_update - summary: Werk een contactpersoon deels bij. - description: Werk een contactpersoon deels bij. + operationId: bijlage_partial_update + description: '' parameters: - name: Content-Type in: header @@ -821,7 +930,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Contactpersoon' + $ref: '#/components/requestBodies/Bijlage' responses: '200': description: OK @@ -834,7 +943,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Contactpersoon' + $ref: '#/components/schemas/Bijlage' '400': $ref: '#/components/responses/400' '401': @@ -856,11 +965,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - contact_persoon + - bijlage delete: - operationId: contactpersoon_delete - summary: Verwijder een contactpersoon. - description: Verwijder een contactpersoon. + operationId: bijlage_delete + description: '' responses: '204': description: No content @@ -889,19 +997,20 @@ paths: '500': $ref: '#/components/responses/500' tags: - - contact_persoon + - bijlage parameters: - - name: id + - name: uuid in: path - description: A unique integer value identifying this contact persoon. + description: Unieke (technische) identificatiecode van het inhoudsdeel. required: true schema: - type: integer - /digitaal_adres: + type: string + format: uuid + /contact_persoon: get: - operationId: digitaaladres_list - summary: Alle digitale adressen opvragen. - description: Alle digitale adressen opvragen. + operationId: contactpersoon_list + summary: Alle contactpersonen opvragen. + description: Alle contactpersonen opvragen. parameters: - name: page in: query @@ -939,7 +1048,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/DigitaalAdres' + $ref: '#/components/schemas/Contactpersoon' '401': $ref: '#/components/responses/401' '403': @@ -957,11 +1066,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - digitaal_adres + - contact_persoon post: - operationId: digitaaladres_create - summary: Maak een digitaal adres aan. - description: Maak een digitaal adres aan. + operationId: contactpersoon_create + summary: Maak een contactpersoon aan. + description: Maak een contactpersoon aan. parameters: - name: Content-Type in: header @@ -972,7 +1081,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/DigitaalAdres' + $ref: '#/components/requestBodies/Contactpersoon' responses: '201': description: Created @@ -990,7 +1099,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DigitaalAdres' + $ref: '#/components/schemas/Contactpersoon' '400': $ref: '#/components/responses/400' '401': @@ -1010,13 +1119,13 @@ paths: '500': $ref: '#/components/responses/500' tags: - - digitaal_adres + - contact_persoon parameters: [] - /digitaal_adres/{uuid}: + /contact_persoon/{id}: get: - operationId: digitaaladres_read - summary: Een specifiek digitaal adres opvragen. - description: Een specifiek digitaal adres opvragen. + operationId: contactpersoon_read + summary: Een specifiek contactpersoon opvragen. + description: Een specifiek contactpersoon opvragen. responses: '200': description: OK @@ -1029,7 +1138,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DigitaalAdres' + $ref: '#/components/schemas/Contactpersoon' '401': $ref: '#/components/responses/401' '403': @@ -1049,11 +1158,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - digitaal_adres + - contact_persoon put: - operationId: digitaaladres_update - summary: Werk een digitaal adres in zijn geheel bij. - description: Werk een digitaal adres in zijn geheel bij. + operationId: contactpersoon_update + summary: Werk een contactpersoon in zijn geheel bij. + description: Werk een contactpersoon in zijn geheel bij. parameters: - name: Content-Type in: header @@ -1064,7 +1173,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/DigitaalAdres' + $ref: '#/components/requestBodies/Contactpersoon' responses: '200': description: OK @@ -1077,7 +1186,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DigitaalAdres' + $ref: '#/components/schemas/Contactpersoon' '400': $ref: '#/components/responses/400' '401': @@ -1099,11 +1208,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - digitaal_adres + - contact_persoon patch: - operationId: digitaaladres_partial_update - summary: Werk een digitaal adres deels bij. - description: Werk een digitaal adres deels bij. + operationId: contactpersoon_partial_update + summary: Werk een contactpersoon deels bij. + description: Werk een contactpersoon deels bij. parameters: - name: Content-Type in: header @@ -1114,7 +1223,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/DigitaalAdres' + $ref: '#/components/requestBodies/Contactpersoon' responses: '200': description: OK @@ -1127,7 +1236,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DigitaalAdres' + $ref: '#/components/schemas/Contactpersoon' '400': $ref: '#/components/responses/400' '401': @@ -1149,11 +1258,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - digitaal_adres + - contact_persoon delete: - operationId: digitaaladres_delete - summary: Verwijder een digitaal adres. - description: Verwijder een digitaal adres. + operationId: contactpersoon_delete + summary: Verwijder een contactpersoon. + description: Verwijder een contactpersoon. responses: '204': description: No content @@ -1182,20 +1291,19 @@ paths: '500': $ref: '#/components/responses/500' tags: - - digitaal_adres + - contact_persoon parameters: - - name: uuid + - name: id in: path - description: Unieke (technische) identificatiecode van het digitaal adres. + description: A unique integer value identifying this contact persoon. required: true schema: - type: string - format: uuid - /geautomatiseerde_actoren: + type: integer + /digitaal_adres: get: - operationId: geautomatiseerdeactor_list - summary: Alle geautomatiseerde actoren opvragen. - description: Alle geautomatiseerde actoren opvragen. + operationId: digitaaladres_list + summary: Alle digitale adressen opvragen. + description: Alle digitale adressen opvragen. parameters: - name: page in: query @@ -1233,7 +1341,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/GeautomatiseerdeActor' + $ref: '#/components/schemas/DigitaalAdres' '401': $ref: '#/components/responses/401' '403': @@ -1251,11 +1359,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - geautomatiseerde_actoren + - digitaal_adres post: - operationId: geautomatiseerdeactor_create - summary: Maak een geautomatiseerde actor aan. - description: Maak een geautomatiseerde actor aan. + operationId: digitaaladres_create + summary: Maak een digitaal adres aan. + description: Maak een digitaal adres aan. parameters: - name: Content-Type in: header @@ -1266,7 +1374,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/GeautomatiseerdeActor' + $ref: '#/components/requestBodies/DigitaalAdres' responses: '201': description: Created @@ -1284,7 +1392,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GeautomatiseerdeActor' + $ref: '#/components/schemas/DigitaalAdres' '400': $ref: '#/components/responses/400' '401': @@ -1304,13 +1412,13 @@ paths: '500': $ref: '#/components/responses/500' tags: - - geautomatiseerde_actoren + - digitaal_adres parameters: [] - /geautomatiseerde_actoren/{id}: + /digitaal_adres/{uuid}: get: - operationId: geautomatiseerdeactor_read - summary: Een specifiek geautomatiseerde actor opvragen. - description: Een specifiek geautomatiseerde actor opvragen. + operationId: digitaaladres_read + summary: Een specifiek digitaal adres opvragen. + description: Een specifiek digitaal adres opvragen. responses: '200': description: OK @@ -1323,7 +1431,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GeautomatiseerdeActor' + $ref: '#/components/schemas/DigitaalAdres' '401': $ref: '#/components/responses/401' '403': @@ -1343,11 +1451,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - geautomatiseerde_actoren + - digitaal_adres put: - operationId: geautomatiseerdeactor_update - summary: Werk een geautomatiseerde actor in zijn geheel bij. - description: Werk een geautomatiseerde actor in zijn geheel bij. + operationId: digitaaladres_update + summary: Werk een digitaal adres in zijn geheel bij. + description: Werk een digitaal adres in zijn geheel bij. parameters: - name: Content-Type in: header @@ -1358,7 +1466,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/GeautomatiseerdeActor' + $ref: '#/components/requestBodies/DigitaalAdres' responses: '200': description: OK @@ -1371,7 +1479,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GeautomatiseerdeActor' + $ref: '#/components/schemas/DigitaalAdres' '400': $ref: '#/components/responses/400' '401': @@ -1393,11 +1501,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - geautomatiseerde_actoren + - digitaal_adres patch: - operationId: geautomatiseerdeactor_partial_update - summary: Werk een geautomatiseerde actor deels bij. - description: Werk een geautomatiseerde actor deels bij. + operationId: digitaaladres_partial_update + summary: Werk een digitaal adres deels bij. + description: Werk een digitaal adres deels bij. parameters: - name: Content-Type in: header @@ -1408,7 +1516,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/GeautomatiseerdeActor' + $ref: '#/components/requestBodies/DigitaalAdres' responses: '200': description: OK @@ -1421,7 +1529,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GeautomatiseerdeActor' + $ref: '#/components/schemas/DigitaalAdres' '400': $ref: '#/components/responses/400' '401': @@ -1443,11 +1551,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - geautomatiseerde_actoren + - digitaal_adres delete: - operationId: geautomatiseerdeactor_delete - summary: Verwijder een geautomatiseerde actor. - description: Verwijder een geautomatiseerde actor. + operationId: digitaaladres_delete + summary: Verwijder een digitaal adres. + description: Verwijder een digitaal adres. responses: '204': description: No content @@ -1476,19 +1584,21 @@ paths: '500': $ref: '#/components/responses/500' tags: - - geautomatiseerde_actoren + - digitaal_adres parameters: - - name: id + - name: uuid in: path - description: A unique integer value identifying this geautomatiseerde actor. + description: Unieke (technische) identificatiecode van het digitaal adres. required: true schema: - type: integer - /interne_taak: + type: string + format: uuid + /geautomatiseerde_actoren: get: - operationId: internetaak_list - summary: Alle interne taken opvragen. - description: Alle interne taken opvragen. + operationId: geautomatiseerdeactor_list + description: 'Alle geautomatiseerde actoren opvragen. + + Alle geautomatiseerde actoren opvragen.' parameters: - name: page in: query @@ -1526,7 +1636,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/InterneTaak' + $ref: '#/components/schemas/GeautomatiseerdeActor' '401': $ref: '#/components/responses/401' '403': @@ -1544,11 +1654,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - interne_taak + - geautomatiseerde_actoren post: - operationId: internetaak_create - summary: Maak een interne taak aan. - description: Maak een interne taak aan. + operationId: geautomatiseerdeactor_create + description: 'Maak een geautomatiseerde actor aan. + + Maak een geautomatiseerde actor aan.' parameters: - name: Content-Type in: header @@ -1559,7 +1670,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/InterneTaak' + $ref: '#/components/requestBodies/GeautomatiseerdeActor' responses: '201': description: Created @@ -1577,7 +1688,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InterneTaak' + $ref: '#/components/schemas/GeautomatiseerdeActor' '400': $ref: '#/components/responses/400' '401': @@ -1597,13 +1708,14 @@ paths: '500': $ref: '#/components/responses/500' tags: - - interne_taak + - geautomatiseerde_actoren parameters: [] - /interne_taak/{uuid}: + /geautomatiseerde_actoren/{id}: get: - operationId: internetaak_read - summary: Een specifiek interne taak opvragen. - description: Een specifiek interne taak opvragen. + operationId: geautomatiseerdeactor_read + description: 'Een specifiek geautomatiseerde actor opvragen. + + Een specifiek geautomatiseerde actor opvragen.' responses: '200': description: OK @@ -1616,7 +1728,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InterneTaak' + $ref: '#/components/schemas/GeautomatiseerdeActor' '401': $ref: '#/components/responses/401' '403': @@ -1636,11 +1748,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - interne_taak + - geautomatiseerde_actoren put: - operationId: internetaak_update - summary: Werk een interne taak in zijn geheel bij. - description: Werk een interne taak in zijn geheel bij. + operationId: geautomatiseerdeactor_update + description: 'Werk een geautomatiseerde actor in zijn geheel bij. + + Werk een geautomatiseerde actor in zijn geheel bij.' parameters: - name: Content-Type in: header @@ -1651,7 +1764,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/InterneTaak' + $ref: '#/components/requestBodies/GeautomatiseerdeActor' responses: '200': description: OK @@ -1664,7 +1777,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InterneTaak' + $ref: '#/components/schemas/GeautomatiseerdeActor' '400': $ref: '#/components/responses/400' '401': @@ -1686,11 +1799,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - interne_taak + - geautomatiseerde_actoren patch: - operationId: internetaak_partial_update - summary: Werk een interne taak deels bij. - description: Werk een interne taak deels bij. + operationId: geautomatiseerdeactor_partial_update + description: 'Werk een geautomatiseerde actor deels bij. + + Werk een geautomatiseerde actor deels bij.' parameters: - name: Content-Type in: header @@ -1701,7 +1815,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/InterneTaak' + $ref: '#/components/requestBodies/GeautomatiseerdeActor' responses: '200': description: OK @@ -1714,7 +1828,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InterneTaak' + $ref: '#/components/schemas/GeautomatiseerdeActor' '400': $ref: '#/components/responses/400' '401': @@ -1736,11 +1850,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - interne_taak + - geautomatiseerde_actoren delete: - operationId: internetaak_delete - summary: Verwijder een interne taak. - description: Verwijder een interne taak. + operationId: geautomatiseerdeactor_delete + description: 'Verwijder een geautomatiseerde actor. + + Verwijder een geautomatiseerde actor.' responses: '204': description: No content @@ -1769,21 +1884,55 @@ paths: '500': $ref: '#/components/responses/500' tags: - - interne_taak + - geautomatiseerde_actoren parameters: - - name: uuid + - name: id in: path - description: Unieke (technische) identificatiecode van de interne taak. + description: A unique integer value identifying this geautomatiseerde actor. required: true schema: - type: string - format: uuid - /klantcontact: + type: integer + /interne_taak: get: - operationId: klantcontact_list - summary: Alle klanten contacten opvragen. - description: Alle klanten contacten opvragen. + operationId: internetaak_list + summary: Alle interne taken opvragen. + description: Alle interne taken opvragen. parameters: + - name: nummer + in: query + description: Uniek identificerend nummer dat tijdens communicatie tussen mensen + kan worden gebruikt om de specifieke interne taak aan te duiden. + required: false + schema: + type: string + - name: status + in: query + description: Aanduiding van de vordering bij afhandeling van de interne taak. + required: false + schema: + type: string + enum: + - te_verwerken + - verwerkt + - name: actor__naam + in: query + description: Naam van de actor. + required: false + schema: + type: string + - name: klantcontact__uuid + in: query + description: Unieke (technische) identificatiecode van de betrokkene bij klantcontact. + required: false + schema: + type: string + - name: klantcontact__nummer + in: query + description: Uniek identificerend nummer dat tijdens communicatie tussen mensen + kan worden gebruikt om het specifieke klantcontact aan te duiden. + required: false + schema: + type: string - name: page in: query description: Een pagina binnen de gepagineerde set resultaten. @@ -1820,7 +1969,9 @@ paths: results: type: array items: - $ref: '#/components/schemas/Klantcontact' + $ref: '#/components/schemas/InterneTaak' + '400': + $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': @@ -1838,11 +1989,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - klantcontact + - interne_taak post: - operationId: klantcontact_create - summary: Maak een klant contact aan. - description: Maak een klant contact aan. + operationId: internetaak_create + summary: Maak een interne taak aan. + description: Maak een interne taak aan. parameters: - name: Content-Type in: header @@ -1853,7 +2004,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Klantcontact' + $ref: '#/components/requestBodies/InterneTaak' responses: '201': description: Created @@ -1871,7 +2022,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Klantcontact' + $ref: '#/components/schemas/InterneTaak' '400': $ref: '#/components/responses/400' '401': @@ -1891,13 +2042,13 @@ paths: '500': $ref: '#/components/responses/500' tags: - - klantcontact + - interne_taak parameters: [] - /klantcontact/{uuid}: + /interne_taak/{uuid}: get: - operationId: klantcontact_read - summary: Een specifiek klant contact opvragen. - description: Een specifiek klant contact opvragen. + operationId: internetaak_read + summary: Een specifiek interne taak opvragen. + description: Een specifiek interne taak opvragen. responses: '200': description: OK @@ -1910,7 +2061,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Klantcontact' + $ref: '#/components/schemas/InterneTaak' '401': $ref: '#/components/responses/401' '403': @@ -1930,11 +2081,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - klantcontact + - interne_taak put: - operationId: klantcontact_update - summary: Werk een klant contact in zijn geheel bij. - description: Werk een klant contact in zijn geheel bij. + operationId: internetaak_update + summary: Werk een interne taak in zijn geheel bij. + description: Werk een interne taak in zijn geheel bij. parameters: - name: Content-Type in: header @@ -1945,7 +2096,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Klantcontact' + $ref: '#/components/requestBodies/InterneTaak' responses: '200': description: OK @@ -1958,7 +2109,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Klantcontact' + $ref: '#/components/schemas/InterneTaak' '400': $ref: '#/components/responses/400' '401': @@ -1980,11 +2131,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - klantcontact + - interne_taak patch: - operationId: klantcontact_partial_update - summary: Werk een klant contact deels bij. - description: Werk een klant contact deels bij. + operationId: internetaak_partial_update + summary: Werk een interne taak deels bij. + description: Werk een interne taak deels bij. parameters: - name: Content-Type in: header @@ -1995,7 +2146,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Klantcontact' + $ref: '#/components/requestBodies/InterneTaak' responses: '200': description: OK @@ -2008,7 +2159,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Klantcontact' + $ref: '#/components/schemas/InterneTaak' '400': $ref: '#/components/responses/400' '401': @@ -2030,11 +2181,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - klantcontact + - interne_taak delete: - operationId: klantcontact_delete - summary: Verwijder een klant contact. - description: Verwijder een klant contact. + operationId: internetaak_delete + summary: Verwijder een interne taak. + description: Verwijder een interne taak. responses: '204': description: No content @@ -2063,21 +2214,58 @@ paths: '500': $ref: '#/components/responses/500' tags: - - klantcontact + - interne_taak parameters: - name: uuid in: path - description: Unieke (technische) identificatiecode van de betrokkene bij klantcontact. + description: Unieke (technische) identificatiecode van de interne taak. required: true schema: type: string format: uuid - /medewerker: + /klantcontact: get: - operationId: medewerker_list - summary: Alle medewerkers opvragen. - description: Alle medewerkers opvragen. + operationId: klantcontact_list + summary: Alle klanten contacten opvragen. + description: Alle klanten contacten opvragen. parameters: + - name: hadBetrokkene__url + in: query + description: Zoek klantcontract object op basis van het betrokkene url + required: false + schema: + type: string + - name: hadBetrokkene__uuid + in: query + description: Zoek klantcontract object op basis van het betrokkene uuid + required: false + schema: + type: string + - name: nummer + in: query + description: Uniek identificerend nummer dat tijdens communicatie tussen mensen + kan worden gebruikt om het specifieke klantcontact aan te duiden. + required: false + schema: + type: string + - name: kanaal + in: query + description: Communicatiekanaal dat bij het klantcontact werd gebruikt. + required: false + schema: + type: string + - name: inhoud + in: query + description: Zoek klantcontacten met specifieke tekst in inhoud + required: false + schema: + type: string + - name: onderwerp + in: query + description: Zoek klantcontacten met specifieke tekst in onderwerp + required: false + schema: + type: string - name: page in: query description: Een pagina binnen de gepagineerde set resultaten. @@ -2114,7 +2302,9 @@ paths: results: type: array items: - $ref: '#/components/schemas/Medewerker' + $ref: '#/components/schemas/Klantcontact' + '400': + $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': @@ -2132,11 +2322,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - medewerker + - klantcontact post: - operationId: medewerker_create - summary: Maak een medewerker aan. - description: Maak een medewerker aan. + operationId: klantcontact_create + summary: Maak een klant contact aan. + description: Maak een klant contact aan. parameters: - name: Content-Type in: header @@ -2147,7 +2337,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Medewerker' + $ref: '#/components/requestBodies/Klantcontact' responses: '201': description: Created @@ -2165,7 +2355,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Medewerker' + $ref: '#/components/schemas/Klantcontact' '400': $ref: '#/components/responses/400' '401': @@ -2185,13 +2375,13 @@ paths: '500': $ref: '#/components/responses/500' tags: - - medewerker + - klantcontact parameters: [] - /medewerker/{id}: + /klantcontact/{uuid}: get: - operationId: medewerker_read - summary: Een specifiek medewerker opvragen. - description: Een specifiek medewerker opvragen. + operationId: klantcontact_read + summary: Een specifiek klant contact opvragen. + description: Een specifiek klant contact opvragen. responses: '200': description: OK @@ -2204,7 +2394,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Medewerker' + $ref: '#/components/schemas/Klantcontact' '401': $ref: '#/components/responses/401' '403': @@ -2224,11 +2414,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - medewerker + - klantcontact put: - operationId: medewerker_update - summary: Werk een medewerker in zijn geheel bij. - description: Werk een medewerker in zijn geheel bij. + operationId: klantcontact_update + summary: Werk een klant contact in zijn geheel bij. + description: Werk een klant contact in zijn geheel bij. parameters: - name: Content-Type in: header @@ -2239,7 +2429,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Medewerker' + $ref: '#/components/requestBodies/Klantcontact' responses: '200': description: OK @@ -2252,7 +2442,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Medewerker' + $ref: '#/components/schemas/Klantcontact' '400': $ref: '#/components/responses/400' '401': @@ -2274,11 +2464,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - medewerker + - klantcontact patch: - operationId: medewerker_partial_update - summary: Werk een medewerker deels bij. - description: Werk een medewerker deels bij. + operationId: klantcontact_partial_update + summary: Werk een klant contact deels bij. + description: Werk een klant contact deels bij. parameters: - name: Content-Type in: header @@ -2289,7 +2479,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Medewerker' + $ref: '#/components/requestBodies/Klantcontact' responses: '200': description: OK @@ -2302,7 +2492,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Medewerker' + $ref: '#/components/schemas/Klantcontact' '400': $ref: '#/components/responses/400' '401': @@ -2324,11 +2514,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - medewerker + - klantcontact delete: - operationId: medewerker_delete - summary: Verwijder een medewerker. - description: Verwijder een medewerker. + operationId: klantcontact_delete + summary: Verwijder een klant contact. + description: Verwijder een klant contact. responses: '204': description: No content @@ -2357,19 +2547,21 @@ paths: '500': $ref: '#/components/responses/500' tags: - - medewerker + - klantcontact parameters: - - name: id + - name: uuid in: path - description: A unique integer value identifying this medewerker. + description: Unieke (technische) identificatiecode van de betrokkene bij klantcontact. required: true schema: - type: integer - /organisatie: + type: string + format: uuid + /medewerker: get: - operationId: organisatie_list - summary: Alle organisaties opvragen. - description: Alle organisaties opvragen. + operationId: medewerker_list + description: 'Alle medewerkers opvragen. + + Alle medewerkers opvragen.' parameters: - name: page in: query @@ -2407,7 +2599,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/Organisatie' + $ref: '#/components/schemas/Medewerker' '401': $ref: '#/components/responses/401' '403': @@ -2425,11 +2617,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatie + - medewerker post: - operationId: organisatie_create - summary: Maak een organisatie aan. - description: Maak een organisatie aan. + operationId: medewerker_create + description: 'Maak een medewerker aan. + + Maak een medewerker aan.' parameters: - name: Content-Type in: header @@ -2440,7 +2633,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Organisatie' + $ref: '#/components/requestBodies/Medewerker' responses: '201': description: Created @@ -2458,7 +2651,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Organisatie' + $ref: '#/components/schemas/Medewerker' '400': $ref: '#/components/responses/400' '401': @@ -2478,13 +2671,14 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatie + - medewerker parameters: [] - /organisatie/{id}: + /medewerker/{id}: get: - operationId: organisatie_read - summary: Een specifiek organisatie opvragen. - description: Een specifiek organisatie opvragen. + operationId: medewerker_read + description: 'Een specifiek medewerker opvragen. + + Een specifiek medewerker opvragen.' responses: '200': description: OK @@ -2497,7 +2691,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Organisatie' + $ref: '#/components/schemas/Medewerker' '401': $ref: '#/components/responses/401' '403': @@ -2517,11 +2711,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatie + - medewerker put: - operationId: organisatie_update - summary: Werk een organisatie in zijn geheel bij. - description: Werk een organisatie in zijn geheel bij. + operationId: medewerker_update + description: 'Werk een medewerker in zijn geheel bij. + + Werk een medewerker in zijn geheel bij.' parameters: - name: Content-Type in: header @@ -2532,7 +2727,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Organisatie' + $ref: '#/components/requestBodies/Medewerker' responses: '200': description: OK @@ -2545,7 +2740,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Organisatie' + $ref: '#/components/schemas/Medewerker' '400': $ref: '#/components/responses/400' '401': @@ -2567,11 +2762,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatie + - medewerker patch: - operationId: organisatie_partial_update - summary: Werk een organisatie deels bij. - description: Werk een organisatie deels bij. + operationId: medewerker_partial_update + description: 'Werk een medewerker deels bij. + + Werk een medewerker deels bij.' parameters: - name: Content-Type in: header @@ -2582,7 +2778,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Organisatie' + $ref: '#/components/requestBodies/Medewerker' responses: '200': description: OK @@ -2595,7 +2791,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Organisatie' + $ref: '#/components/schemas/Medewerker' '400': $ref: '#/components/responses/400' '401': @@ -2617,11 +2813,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatie + - medewerker delete: - operationId: organisatie_delete - summary: Verwijder een organisatie. - description: Verwijder een organisatie. + operationId: medewerker_delete + description: 'Verwijder een medewerker. + + Verwijder een medewerker.' responses: '204': description: No content @@ -2650,20 +2847,40 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatie + - medewerker parameters: - name: id in: path - description: A unique integer value identifying this organisatie. + description: A unique integer value identifying this medewerker. required: true schema: type: integer - /organisatorische_eenheid: + /onderwerpobject: get: - operationId: organisatorischeeenheid_list - summary: Alle organisatorische eenheid opvragen. - description: Alle organisatorische eenheid opvragen. + operationId: onderwerpobject_list + description: '' parameters: + - name: objectidentificatorObjecttype + in: query + description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK + PERSOON''.' + required: false + schema: + type: string + - name: objectidentificatorSoortObjectId + in: query + description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld: + ''Burgerservicenummer''.' + required: false + schema: + type: string + - name: objectidentificatorObjectId + in: query + description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld: + ''123456788''.' + required: false + schema: + type: string - name: page in: query description: Een pagina binnen de gepagineerde set resultaten. @@ -2700,7 +2917,9 @@ paths: results: type: array items: - $ref: '#/components/schemas/OrganisatorischeEenheid' + $ref: '#/components/schemas/Onderwerpobject' + '400': + $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': @@ -2718,11 +2937,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatorische_eenheid + - onderwerpobject post: - operationId: organisatorischeeenheid_create - summary: Maak een organisatorische eenheid aan. - description: Maak een organisatorische eenheid aan. + operationId: onderwerpobject_create + description: '' parameters: - name: Content-Type in: header @@ -2733,7 +2951,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/OrganisatorischeEenheid' + $ref: '#/components/requestBodies/Onderwerpobject' responses: '201': description: Created @@ -2751,7 +2969,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OrganisatorischeEenheid' + $ref: '#/components/schemas/Onderwerpobject' '400': $ref: '#/components/responses/400' '401': @@ -2771,13 +2989,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatorische_eenheid + - onderwerpobject parameters: [] - /organisatorische_eenheid/{id}: + /onderwerpobject/{uuid}: get: - operationId: organisatorischeeenheid_read - summary: Een specifiek organisatorische eenheid opvragen. - description: Een specifiek organisatorische eenheid opvragen. + operationId: onderwerpobject_read + description: '' responses: '200': description: OK @@ -2790,7 +3007,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OrganisatorischeEenheid' + $ref: '#/components/schemas/Onderwerpobject' '401': $ref: '#/components/responses/401' '403': @@ -2810,11 +3027,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatorische_eenheid + - onderwerpobject put: - operationId: organisatorischeeenheid_update - summary: Werk een organisatorische eenheid in zijn geheel bij. - description: Werk een organisatorische eenheid in zijn geheel bij. + operationId: onderwerpobject_update + description: '' parameters: - name: Content-Type in: header @@ -2825,7 +3041,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/OrganisatorischeEenheid' + $ref: '#/components/requestBodies/Onderwerpobject' responses: '200': description: OK @@ -2838,7 +3054,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OrganisatorischeEenheid' + $ref: '#/components/schemas/Onderwerpobject' '400': $ref: '#/components/responses/400' '401': @@ -2860,11 +3076,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatorische_eenheid + - onderwerpobject patch: - operationId: organisatorischeeenheid_partial_update - summary: Werk een organisatorische eenheid deels bij. - description: Werk een organisatorische eenheid deels bij. + operationId: onderwerpobject_partial_update + description: '' parameters: - name: Content-Type in: header @@ -2875,7 +3090,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/OrganisatorischeEenheid' + $ref: '#/components/requestBodies/Onderwerpobject' responses: '200': description: OK @@ -2888,7 +3103,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OrganisatorischeEenheid' + $ref: '#/components/schemas/Onderwerpobject' '400': $ref: '#/components/responses/400' '401': @@ -2910,11 +3125,10 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatorische_eenheid + - onderwerpobject delete: - operationId: organisatorischeeenheid_delete - summary: Verwijder een organisatorische eenheid. - description: Verwijder een organisatorische eenheid. + operationId: onderwerpobject_delete + description: '' responses: '204': description: No content @@ -2943,19 +3157,20 @@ paths: '500': $ref: '#/components/responses/500' tags: - - organisatorische_eenheid + - onderwerpobject parameters: - - name: id + - name: uuid in: path - description: A unique integer value identifying this organisatorische eenheid. + description: Unieke (technische) identificatiecode van het onderwerpdeel. required: true schema: - type: integer - /partij: + type: string + format: uuid + /organisatie: get: - operationId: partij_list - summary: Alle partijen opvragen. - description: Alle partijen opvragen. + operationId: organisatie_list + summary: Alle organisaties opvragen. + description: Alle organisaties opvragen. parameters: - name: page in: query @@ -2993,7 +3208,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/Partij' + $ref: '#/components/schemas/Organisatie' '401': $ref: '#/components/responses/401' '403': @@ -3011,11 +3226,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij + - organisatie post: - operationId: partij_create - summary: Maak een partij aan. - description: Maak een partij aan. + operationId: organisatie_create + summary: Maak een organisatie aan. + description: Maak een organisatie aan. parameters: - name: Content-Type in: header @@ -3026,7 +3241,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Partij' + $ref: '#/components/requestBodies/Organisatie' responses: '201': description: Created @@ -3044,7 +3259,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Partij' + $ref: '#/components/schemas/Organisatie' '400': $ref: '#/components/responses/400' '401': @@ -3064,13 +3279,13 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij + - organisatie parameters: [] - /partij/{uuid}: + /organisatie/{id}: get: - operationId: partij_read - summary: Een specifiek partij opvragen. - description: Een specifiek partij opvragen. + operationId: organisatie_read + summary: Een specifiek organisatie opvragen. + description: Een specifiek organisatie opvragen. responses: '200': description: OK @@ -3083,7 +3298,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Partij' + $ref: '#/components/schemas/Organisatie' '401': $ref: '#/components/responses/401' '403': @@ -3103,11 +3318,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij + - organisatie put: - operationId: partij_update - summary: Werk een partij in zijn geheel bij. - description: Werk een partij in zijn geheel bij. + operationId: organisatie_update + summary: Werk een organisatie in zijn geheel bij. + description: Werk een organisatie in zijn geheel bij. parameters: - name: Content-Type in: header @@ -3118,7 +3333,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Partij' + $ref: '#/components/requestBodies/Organisatie' responses: '200': description: OK @@ -3131,7 +3346,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Partij' + $ref: '#/components/schemas/Organisatie' '400': $ref: '#/components/responses/400' '401': @@ -3153,11 +3368,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij + - organisatie patch: - operationId: partij_partial_update - summary: Werk een partij deels bij. - description: Werk een partij deels bij. + operationId: organisatie_partial_update + summary: Werk een organisatie deels bij. + description: Werk een organisatie deels bij. parameters: - name: Content-Type in: header @@ -3168,7 +3383,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/Partij' + $ref: '#/components/requestBodies/Organisatie' responses: '200': description: OK @@ -3181,7 +3396,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Partij' + $ref: '#/components/schemas/Organisatie' '400': $ref: '#/components/responses/400' '401': @@ -3203,11 +3418,11 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij + - organisatie delete: - operationId: partij_delete - summary: Verwijder een partij. - description: Verwijder een partij. + operationId: organisatie_delete + summary: Verwijder een organisatie. + description: Verwijder een organisatie. responses: '204': description: No content @@ -3236,20 +3451,20 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij + - organisatie parameters: - - name: uuid + - name: id in: path - description: Unieke (technische) identificatiecode van de partij. + description: A unique integer value identifying this organisatie. required: true schema: - type: string - format: uuid - /partij_identificator: + type: integer + /organisatorische_eenheid: get: - operationId: partijidentificator_list - summary: Alle partij-identificatoren opvragen. - description: Alle partij-identificatoren opvragen. + operationId: organisatorischeeenheid_list + description: 'Alle organisatorische eenheid opvragen. + + Alle organisatorische eenheid opvragen.' parameters: - name: page in: query @@ -3287,7 +3502,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/PartijIdentificator' + $ref: '#/components/schemas/OrganisatorischeEenheid' '401': $ref: '#/components/responses/401' '403': @@ -3305,11 +3520,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij_identificator + - organisatorische_eenheid post: - operationId: partijidentificator_create - summary: Maak een partij-identificator aan. - description: Maak een partij-identificator aan. + operationId: organisatorischeeenheid_create + description: 'Maak een organisatorische eenheid aan. + + Maak een organisatorische eenheid aan.' parameters: - name: Content-Type in: header @@ -3320,7 +3536,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/PartijIdentificator' + $ref: '#/components/requestBodies/OrganisatorischeEenheid' responses: '201': description: Created @@ -3338,7 +3554,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PartijIdentificator' + $ref: '#/components/schemas/OrganisatorischeEenheid' '400': $ref: '#/components/responses/400' '401': @@ -3358,13 +3574,14 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij_identificator + - organisatorische_eenheid parameters: [] - /partij_identificator/{uuid}: + /organisatorische_eenheid/{id}: get: - operationId: partijidentificator_read - summary: Een specifiek partij-identificator opvragen. - description: Een specifiek partij-identificator opvragen. + operationId: organisatorischeeenheid_read + description: 'Een specifiek organisatorische eenheid opvragen. + + Een specifiek organisatorische eenheid opvragen.' responses: '200': description: OK @@ -3377,7 +3594,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PartijIdentificator' + $ref: '#/components/schemas/OrganisatorischeEenheid' '401': $ref: '#/components/responses/401' '403': @@ -3397,11 +3614,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij_identificator + - organisatorische_eenheid put: - operationId: partijidentificator_update - summary: Werk een partij-identificator in zijn geheel bij. - description: Werk een partij-identificator in zijn geheel bij. + operationId: organisatorischeeenheid_update + description: 'Werk een organisatorische eenheid in zijn geheel bij. + + Werk een organisatorische eenheid in zijn geheel bij.' parameters: - name: Content-Type in: header @@ -3412,7 +3630,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/PartijIdentificator' + $ref: '#/components/requestBodies/OrganisatorischeEenheid' responses: '200': description: OK @@ -3425,7 +3643,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PartijIdentificator' + $ref: '#/components/schemas/OrganisatorischeEenheid' '400': $ref: '#/components/responses/400' '401': @@ -3447,11 +3665,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij_identificator + - organisatorische_eenheid patch: - operationId: partijidentificator_partial_update - summary: Werk een partij-identificator deels bij. - description: Werk een partij-identificator deels bij. + operationId: organisatorischeeenheid_partial_update + description: 'Werk een organisatorische eenheid deels bij. + + Werk een organisatorische eenheid deels bij.' parameters: - name: Content-Type in: header @@ -3462,7 +3681,7 @@ paths: enum: - application/json requestBody: - $ref: '#/components/requestBodies/PartijIdentificator' + $ref: '#/components/requestBodies/OrganisatorischeEenheid' responses: '200': description: OK @@ -3475,7 +3694,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PartijIdentificator' + $ref: '#/components/schemas/OrganisatorischeEenheid' '400': $ref: '#/components/responses/400' '401': @@ -3497,11 +3716,12 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij_identificator + - organisatorische_eenheid delete: - operationId: partijidentificator_delete - summary: Verwijder een partij-identificator. - description: Verwijder een partij-identificator. + operationId: organisatorischeeenheid_delete + description: 'Verwijder een organisatorische eenheid. + + Verwijder een organisatorische eenheid.' responses: '204': description: No content @@ -3530,20 +3750,19 @@ paths: '500': $ref: '#/components/responses/500' tags: - - partij_identificator + - organisatorische_eenheid parameters: - - name: uuid + - name: id in: path - description: Unieke (technische) identificatiecode van de partij-identificator. + description: A unique integer value identifying this organisatorische eenheid. required: true schema: - type: string - format: uuid - /persoon: + type: integer + /partij: get: - operationId: persoon_list - summary: Alle personen opvragen. - description: Alle personen opvragen. + operationId: partij_list + summary: Alle partijen opvragen. + description: Alle partijen opvragen. parameters: - name: page in: query @@ -3581,7 +3800,7 @@ paths: results: type: array items: - $ref: '#/components/schemas/Persoon' + $ref: '#/components/schemas/Partij' '401': $ref: '#/components/responses/401' '403': @@ -3599,9 +3818,597 @@ paths: '500': $ref: '#/components/responses/500' tags: - - persoon + - partij post: - operationId: persoon_create + operationId: partij_create + summary: Maak een partij aan. + description: Maak een partij aan. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/Partij' + 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/Partij' + '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: + - partij + parameters: [] + /partij/{uuid}: + get: + operationId: partij_read + summary: Een specifiek partij opvragen. + description: Een specifiek partij 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/Partij' + '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: + - partij + put: + operationId: partij_update + summary: Werk een partij in zijn geheel bij. + description: Werk een partij in zijn geheel bij. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/Partij' + 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/Partij' + '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: + - partij + patch: + operationId: partij_partial_update + summary: Werk een partij deels bij. + description: Werk een partij deels bij. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/Partij' + 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/Partij' + '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: + - partij + delete: + operationId: partij_delete + summary: Verwijder een partij. + description: Verwijder een partij. + 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: + - partij + parameters: + - name: uuid + in: path + description: Unieke (technische) identificatiecode van de partij. + required: true + schema: + type: string + format: uuid + /partij_identificator: + get: + operationId: partijidentificator_list + summary: Alle partij-identificatoren opvragen. + description: Alle partij-identificatoren opvragen. + parameters: + - 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/PartijIdentificator' + '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: + - partij_identificator + post: + operationId: partijidentificator_create + summary: Maak een partij-identificator aan. + description: Maak een partij-identificator aan. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/PartijIdentificator' + 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/PartijIdentificator' + '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: + - partij_identificator + parameters: [] + /partij_identificator/{uuid}: + get: + operationId: partijidentificator_read + summary: Een specifiek partij-identificator opvragen. + description: Een specifiek partij-identificator 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/PartijIdentificator' + '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: + - partij_identificator + put: + operationId: partijidentificator_update + summary: Werk een partij-identificator in zijn geheel bij. + description: Werk een partij-identificator in zijn geheel bij. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/PartijIdentificator' + 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/PartijIdentificator' + '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: + - partij_identificator + patch: + operationId: partijidentificator_partial_update + summary: Werk een partij-identificator deels bij. + description: Werk een partij-identificator deels bij. + parameters: + - name: Content-Type + in: header + description: Content type van de verzoekinhoud. + required: true + schema: + type: string + enum: + - application/json + requestBody: + $ref: '#/components/requestBodies/PartijIdentificator' + 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/PartijIdentificator' + '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: + - partij_identificator + delete: + operationId: partijidentificator_delete + summary: Verwijder een partij-identificator. + description: Verwijder een partij-identificator. + 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: + - partij_identificator + parameters: + - name: uuid + in: path + description: Unieke (technische) identificatiecode van de partij-identificator. + required: true + schema: + type: string + format: uuid + /persoon: + get: + operationId: persoon_list + summary: Alle personen opvragen. + description: Alle personen opvragen. + parameters: + - 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/Persoon' + '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: + - persoon + post: + operationId: persoon_create summary: Maak een persoon aan. description: Maak een persoon aan. parameters: @@ -3993,12 +4800,24 @@ components: schema: $ref: '#/components/schemas/Betrokkene' required: true + Onderwerpobject: + content: + application/json: + schema: + $ref: '#/components/schemas/Onderwerpobject' + required: true Actor: content: application/json: schema: $ref: '#/components/schemas/Actor' required: true + Bijlage: + content: + application/json: + schema: + $ref: '#/components/schemas/Bijlage' + required: true Contactpersoon: content: application/json: @@ -4227,8 +5046,8 @@ components: type: array items: $ref: '#/components/schemas/FieldValidationError' - KlantcontactForeignKey: - description: Persoon of organisatie die betrokken was bij een klantcontact. + BetrokkeneForeignKey: + description: Betrokkene bij klantcontact die een partij was. required: - uuid type: object @@ -4248,9 +5067,10 @@ components: readOnly: true maxLength: 1000 minLength: 1 + nullable: true DigitaalAdresForeignKey: - description: Digitaal adres dat een betrokkene bij klantcontact verstrekte voor - gebruik bij opvolging van een klantcontact. + description: Digitaal adres dat een partij verstrekte voor gebruik bij toekomstig + contact met de gemeente. required: - uuid type: object @@ -4265,10 +5085,151 @@ components: 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 + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + nullable: true + PartijForeignKey: + description: Partij die een andere partij vertegenwoordigde. + required: + - uuid + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van de partij. + type: string + format: uuid + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + nullable: true + PartijBezoekadres: + description: Adres waarop de partij door gemeente bezocht wil worden. Dit mag + afwijken van voor de verstrekker eventueel in een basisregistratie bekende + adressen. + type: object + properties: + nummeraanduidingId: + title: Nummeraanduiding id + description: Identificatie van het adres bij de Basisregistratie Adressen + en Gebouwen. + type: string + maxLength: 255 + adresregel1: + title: Adresregel 1 + description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie + Adressen en Gebouwen. + type: string + maxLength: 80 + adresregel2: + title: Adresregel 2 + description: Tweede deel van het adres dat niet voorkomt in de Basisregistratie + Adressen en Gebouwen. + type: string + maxLength: 80 + adresregel3: + title: Adresregel 3 + description: Derde deel van het adres dat niet voorkomt in de Basisregistratie + Adressen en Gebouwen. + type: string + maxLength: 80 + land: + title: Land + description: Een code, opgenomen in Tabel 34, Landentabel, die het land + (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft. + type: string + maxLength: 4 + minLength: 4 + nullable: true + KlantcontactPartij: + description: Betrokkene bij klantcontact die een partij was. + required: + - nummer + - digitaalAdres + - voorkeursDigitaalAdres + - vertegenwoordigde + - soortPartij + - indicatieGeheimhouding + - indicatieActief + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van de partij. + type: string + format: uuid + readOnly: true + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + nummer: + title: Nummer + description: Uniek identificerend nummer dat tijdens communicatie tussen + mensen kan worden gebruikt om de specifieke partij aan te duiden. + type: string + maxLength: 10 + minLength: 1 + interneNotitie: + title: Interne notitie + description: Mededelingen, aantekeningen of bijzonderheden over de partij, + bedoeld voor intern gebruik. + type: string + maxLength: 1000 + betrokkene: + $ref: '#/components/schemas/BetrokkeneForeignKey' + digitaalAdres: + $ref: '#/components/schemas/DigitaalAdresForeignKey' + voorkeursDigitaalAdres: + $ref: '#/components/schemas/DigitaalAdresForeignKey' + vertegenwoordigde: + description: Partij die een andere partij vertegenwoordigde. + type: array + items: + $ref: '#/components/schemas/PartijForeignKey' + nullable: true + soortPartij: + title: Soort partij + description: Geeft aan van welke specifieke soort partij sprake is. + type: string + enum: + - persoon + - organisatie + - contactpersoon + indicatieGeheimhouding: + title: Indicatie geheimhouding + description: Geeft aan of de verstrekker van partijgegevens heeft aangegeven + dat deze gegevens als geheim beschouwd moeten worden. + type: boolean + voorkeurstaal: + title: Voorkeurstaal + description: 'Taal, in ISO 639-2/B formaat, waarin de partij bij voorkeur + contact heeft met de gemeente. Voorbeeld: nld. Zie: https://www.iso.org/standard/4767.html' + type: string + maxLength: 3 + indicatieActief: + title: Indicatie actief + description: Geeft aan of de contactgegevens van de partij nog gebruikt + morgen worden om contact op te nemen. Gegevens van niet-actieve partijen + mogen hiervoor niet worden gebruikt. + type: boolean + bezoekadres: + $ref: '#/components/schemas/PartijBezoekadres' + correspondentieadres: + $ref: '#/components/schemas/partij_correspondentieadres_serializer' nullable: true Bezoekadres: description: Adres waarop de betrokkene bij klantcontact in naar aanleiding @@ -4343,12 +5304,33 @@ components: type: string maxLength: 200 nullable: true + KlantcontactForeignKey: + description: Persoon of organisatie die betrokken was bij een klantcontact. + required: + - uuid + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van de betrokkene bij + klantcontact. + type: string + format: uuid + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 Betrokkene: required: - - klantcontact - - digitaalAdres + - partij - rol - initiator + - klantcontact type: object properties: uuid: @@ -4367,10 +5349,12 @@ components: readOnly: true maxLength: 1000 minLength: 1 - klantcontact: - $ref: '#/components/schemas/KlantcontactForeignKey' - digitaalAdres: - $ref: '#/components/schemas/DigitaalAdresForeignKey' + partij: + description: Betrokkene bij klantcontact die een partij was. + type: array + items: + $ref: '#/components/schemas/KlantcontactPartij' + nullable: true bezoekadres: $ref: '#/components/schemas/Bezoekadres' correspondentieadres: @@ -4394,17 +5378,48 @@ components: initiator: title: Initiator type: boolean - PartijForeignKey: - description: Persoon of organisatie waarmee de gemeente een relatie heeft. + klantcontact: + $ref: '#/components/schemas/KlantcontactForeignKey' + BijlageObjectidentificator: + description: Gegevens die een inhoudsobject in een extern register uniek identificeren. + type: object + properties: + objecttype: + title: Objecttype + description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK + PERSOON''.' + type: string + maxLength: 200 + soortObjectId: + title: Soort object id + description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld: + ''Burgerservicenummer''.' + type: string + maxLength: 200 + objectId: + title: Object-id + description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld: + ''123456788''.' + type: string + maxLength: 200 + register: + title: Register + description: 'Binnen het landschap van registers unieke omschrijving van + het register waarin het object is geregistreerd, bijvoorbeeld: ''BRP''.' + type: string + maxLength: 200 + nullable: true + Bijlage: required: - - uuid + - klantcontact type: object properties: uuid: title: Uuid - description: Unieke (technische) identificatiecode van de partij. + description: Unieke (technische) identificatiecode van het inhoudsdeel. type: string format: uuid + readOnly: true url: title: Url description: URL-referentie naar dit object. Dit is de unieke identificatie @@ -4414,6 +5429,10 @@ components: readOnly: true maxLength: 1000 minLength: 1 + klantcontact: + $ref: '#/components/schemas/KlantcontactForeignKey' + objectidentificator: + $ref: '#/components/schemas/BijlageObjectidentificator' OrganisatieForeignKey: description: Organisatie waarvoor een contactpersoon werkte. required: @@ -4471,7 +5490,7 @@ components: Contactpersoon: required: - partij - - organisatie + - werkteVoorOrganisatie type: object properties: id: @@ -4489,23 +5508,184 @@ components: minLength: 1 partij: $ref: '#/components/schemas/PartijForeignKey' - organisatie: + werkteVoorOrganisatie: $ref: '#/components/schemas/OrganisatieForeignKey' contactnaam: $ref: '#/components/schemas/ContactpersoonPersoon' DigitaalAdres: required: - - adres - - soortDigitaalAdres - - omschrijving + - betrokkene + - adres + - soortDigitaalAdres + - omschrijving + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van het digitaal adres. + type: string + format: uuid + readOnly: true + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + betrokkene: + $ref: '#/components/schemas/BetrokkeneForeignKey' + adres: + title: Adres + description: Digitaal adres waarmee een persoon of organisatie bereikt kan + worden. + type: string + maxLength: 80 + minLength: 1 + soortDigitaalAdres: + title: Soort digitaal adres + description: Typering van het digitale adres die aangeeft via welk(e) kanaal + of kanalen met dit adres contact kan worden opgenomen. + type: string + maxLength: 255 + minLength: 1 + omschrijving: + title: Omschrijving + description: Omschrijving van het digitaal adres. + type: string + maxLength: 40 + minLength: 1 + ActorForeignKey: + description: Iets dat of iemand die voor de gemeente werkzaamheden uitvoert. + required: + - uuid + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van de actor. + type: string + format: uuid + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + GeautomatiseerdeActor: + required: + - actor + - functie + type: object + properties: + id: + title: ID + type: integer + readOnly: true + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + actor: + $ref: '#/components/schemas/ActorForeignKey' + functie: + title: Functie + description: Functie van de geautomatiseerde actor of beschrijving van de + werkzaamheden die deze uitvoert. + type: string + maxLength: 40 + minLength: 1 + omschrijving: + title: Omschrijving + description: Omschrijving van de geautomatiseerde actor. + type: string + maxLength: 200 + InterneTaak: + required: + - nummer + - gevraagdeHandeling + - actor + - klantcontact + - toelichting + - status + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van de interne taak. + type: string + format: uuid + readOnly: true + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + nummer: + title: Nummer + description: Uniek identificerend nummer dat tijdens communicatie tussen + mensen kan worden gebruikt om de specifieke interne taak aan te duiden. + type: string + maxLength: 10 + minLength: 1 + gevraagdeHandeling: + title: Gevraagde handeling + description: Handeling die moet worden uitgevoerd om de taak af te ronden. + type: string + maxLength: 200 + minLength: 1 + actor: + $ref: '#/components/schemas/ActorForeignKey' + klantcontact: + $ref: '#/components/schemas/KlantcontactForeignKey' + toelichting: + title: Toelichting + description: Toelichting die, aanvullend bij de inhoud van het klantcontact + dat aanleiding gaf tot de taak en de gevraagde handeling, bijdraagt aan + het kunnen afhandelen van de taak. + type: string + maxLength: 400 + minLength: 1 + status: + title: Status + description: Aanduiding van de vordering bij afhandeling van de interne + taak. + type: string + enum: + - te_verwerken + - verwerkt + toegewezenOp: + title: Toegewezen op + description: Datum en tijdstip waarop de interne taak aan een actor werd + toegewezen. + type: string + format: date-time + readOnly: true + OnderwerpobjectForeignKey: + description: Onderwerpobject dat tijdens een klantcontact aan de orde was. + required: + - uuid type: object properties: uuid: title: Uuid - description: Unieke (technische) identificatiecode van het digitaal adres. + description: Unieke (technische) identificatiecode van het onderwerpdeel. type: string format: uuid - readOnly: true url: title: Url description: URL-referentie naar dit object. Dit is de unieke identificatie @@ -4515,35 +5695,16 @@ components: readOnly: true maxLength: 1000 minLength: 1 - adres: - title: Adres - description: Digitaal adres waarmee een persoon of organisatie bereikt kan - worden. - type: string - maxLength: 80 - minLength: 1 - soortDigitaalAdres: - title: Soort digitaal adres - description: Typering van het digitale adres die aangeeft via welk(e) kanaal - of kanalen met dit adres contact kan worden opgenomen. - type: string - maxLength: 255 - minLength: 1 - omschrijving: - title: Omschrijving - description: Omschrijving van het digitaal adres. - type: string - maxLength: 40 - minLength: 1 - ActorForeignKey: - description: Iets dat of iemand die voor de gemeente werkzaamheden uitvoert. + nullable: true + BijlageForeignKey: + description: Bijlage die (een deel van) de inhoud van het klantcontact beschrijft. required: - uuid type: object properties: uuid: title: Uuid - description: Unieke (technische) identificatiecode van de actor. + description: Unieke (technische) identificatiecode van het inhoudsdeel. type: string format: uuid url: @@ -4555,15 +5716,21 @@ components: readOnly: true maxLength: 1000 minLength: 1 - GeautomatiseerdeActor: + nullable: true + BetrokkeneKlantcontact: + description: Persoon of organisatie die betrokken was bij een klantcontact. required: - - actor - - functie + - partij + - rol + - initiator type: object properties: - id: - title: ID - type: integer + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van de betrokkene bij + klantcontact. + type: string + format: uuid readOnly: true url: title: Url @@ -4574,26 +5741,44 @@ components: readOnly: true maxLength: 1000 minLength: 1 - actor: - $ref: '#/components/schemas/ActorForeignKey' - functie: - title: Functie - description: Functie van de geautomatiseerde actor of beschrijving van de - werkzaamheden die deze uitvoert. + partij: + description: Betrokkene bij klantcontact die een partij was. + type: array + items: + $ref: '#/components/schemas/KlantcontactPartij' + nullable: true + bezoekadres: + $ref: '#/components/schemas/Bezoekadres' + correspondentieadres: + $ref: '#/components/schemas/betrokkene_correspondentieadres' + contactnaam: + $ref: '#/components/schemas/Contactnaam' + rol: + title: Rol + description: Rol die de betrokkene bij klantcontact tijdens dat contact + vervulde. type: string - maxLength: 40 - minLength: 1 - omschrijving: - title: Omschrijving - description: Omschrijving van de geautomatiseerde actor. + enum: + - vertegenwoordiger + - klant + organisatienaam: + title: Organisatienaam + description: Naam van de organisatie waarmee de betrokkene bij klantcontact + een relatie had. type: string maxLength: 200 - InterneTaak: + initiator: + title: Initiator + type: boolean + klantcontact: + $ref: '#/components/schemas/KlantcontactForeignKey' + nullable: true + KlantcontactInterneTaak: + description: Klantcontact dat leidde tot een interne taak. required: - nummer - gevraagdeHandeling - actor - - klantcontact - toelichting - status type: object @@ -4653,8 +5838,13 @@ components: type: string format: date-time readOnly: true + nullable: true Klantcontact: required: + - gingOverOnderwerpobject + - omvatteBijlagen + - hadBetrokkene + - leideTotInterneTaken - nummer - kanaal - onderwerp @@ -4679,6 +5869,30 @@ components: readOnly: true maxLength: 1000 minLength: 1 + gingOverOnderwerpobject: + description: Onderwerpobject dat tijdens een klantcontact aan de orde was. + type: array + items: + $ref: '#/components/schemas/OnderwerpobjectForeignKey' + nullable: true + omvatteBijlagen: + description: Bijlage die (een deel van) de inhoud van het klantcontact beschrijft. + type: array + items: + $ref: '#/components/schemas/BijlageForeignKey' + nullable: true + hadBetrokkene: + description: Persoon of organisatie die betrokken was bij een klantcontact. + type: array + items: + $ref: '#/components/schemas/BetrokkeneKlantcontact' + nullable: true + leideTotInterneTaken: + description: Klantcontact dat leidde tot een interne taak. + type: array + items: + $ref: '#/components/schemas/KlantcontactInterneTaak' + nullable: true nummer: title: Nummer description: Uniek identificerend nummer dat tijdens communicatie tussen @@ -4778,9 +5992,87 @@ components: type: string maxLength: 20 minLength: 1 + OnderwerpobjectObjectidentificator: + description: Gegevens die een onderwerpobject in een extern register uniek identificeren. + type: object + properties: + objecttype: + title: Objecttype + description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK + PERSOON''.' + type: string + maxLength: 200 + soortObjectId: + title: Soort object id + description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld: + ''Burgerservicenummer''.' + type: string + maxLength: 200 + objectId: + title: Object-id + description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld: + ''123456788''.' + type: string + maxLength: 200 + register: + title: Register + description: 'Binnen het landschap van registers unieke omschrijving van + het register waarin het object is geregistreerd, bijvoorbeeld: ''BRP''.' + type: string + maxLength: 200 + nullable: true + Onderwerpobject: + required: + - klantcontact + - wasKlantcontact + type: object + properties: + uuid: + title: Uuid + description: Unieke (technische) identificatiecode van het onderwerpdeel. + type: string + format: uuid + readOnly: true + url: + title: Url + description: URL-referentie naar dit object. Dit is de unieke identificatie + en locatie van dit object. + type: string + format: uri + readOnly: true + maxLength: 1000 + minLength: 1 + klantcontact: + $ref: '#/components/schemas/KlantcontactForeignKey' + wasKlantcontact: + $ref: '#/components/schemas/KlantcontactForeignKey' + objectidentificator: + $ref: '#/components/schemas/OnderwerpobjectObjectidentificator' + ContactPersoonForeignkey: + description: Organisatie waarvoor een contactpersoon werkte. + required: + - id + type: object + properties: + id: + title: ID + type: integer + 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 + partij: + $ref: '#/components/schemas/PartijForeignKey' + nullable: true Organisatie: required: - partij + - contactpersoon type: object properties: id: @@ -4803,6 +6095,12 @@ components: maxLength: 200 partij: $ref: '#/components/schemas/PartijForeignKey' + contactpersoon: + description: Organisatie waarvoor een contactpersoon werkte. + type: array + items: + $ref: '#/components/schemas/ContactPersoonForeignkey' + nullable: true OrganisatorischeEenheid: required: - actor @@ -4851,66 +6149,6 @@ components: type: string maxLength: 20 minLength: 1 - BetrokkeneForeignKey: - description: Betrokkene bij klantcontact die een partij was. - required: - - uuid - type: object - properties: - uuid: - title: Uuid - description: Unieke (technische) identificatiecode van de betrokkene bij - klantcontact. - type: string - format: uuid - url: - title: Url - description: URL-referentie naar dit object. Dit is de unieke identificatie - en locatie van dit object. - type: string - format: uri - readOnly: true - maxLength: 1000 - minLength: 1 - nullable: true - PartijBezoekadres: - description: Adres waarop de partij door gemeente bezocht wil worden. Dit mag - afwijken van voor de verstrekker eventueel in een basisregistratie bekende - adressen. - type: object - properties: - nummeraanduidingId: - title: Nummeraanduiding id - description: Identificatie van het adres bij de Basisregistratie Adressen - en Gebouwen. - type: string - maxLength: 255 - adresregel1: - title: Adresregel 1 - description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie - Adressen en Gebouwen. - type: string - maxLength: 80 - adresregel2: - title: Adresregel 2 - description: Tweede deel van het adres dat niet voorkomt in de Basisregistratie - Adressen en Gebouwen. - type: string - maxLength: 80 - adresregel3: - title: Adresregel 3 - description: Derde deel van het adres dat niet voorkomt in de Basisregistratie - Adressen en Gebouwen. - type: string - maxLength: 80 - land: - title: Land - description: Een code, opgenomen in Tabel 34, Landentabel, die het land - (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft. - type: string - maxLength: 4 - minLength: 4 - nullable: true Partij: required: - nummer @@ -5111,10 +6349,10 @@ components: $ref: '#/components/schemas/PartijForeignKey' contactnaam: $ref: '#/components/schemas/PersoonContact' - betrokkene_correspondentieadres: - description: Adres waarop de betrokkene bij klantcontact naar aanleiding van - dat contact te versturen post wil ontvangen. Dit mag afwijken van voor de - verstrekker eventueel in een basisregistratie bekende adressen. + partij_correspondentieadres_serializer: + description: Adres waarop de partij post van de gemeente wil ontvangen. Dit + mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende + adressen. type: object properties: nummeraanduidingId: @@ -5149,10 +6387,10 @@ components: maxLength: 4 minLength: 4 nullable: true - partij_correspondentieadres_serializer: - description: Adres waarop de partij post van de gemeente wil ontvangen. Dit - mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende - adressen. + betrokkene_correspondentieadres: + description: Adres waarop de betrokkene bij klantcontact naar aanleiding van + dat contact te versturen post wil ontvangen. Dit mag afwijken van voor de + verstrekker eventueel in een basisregistratie bekende adressen. type: object properties: nummeraanduidingId: diff --git a/src/openklant/components/klantinteracties/resources.md b/src/openklant/components/klantinteracties/resources.md index 89a08588..9d171b06 100644 --- a/src/openklant/components/klantinteracties/resources.md +++ b/src/openklant/components/klantinteracties/resources.md @@ -24,10 +24,20 @@ Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/o | --- | --- | --- | --- | --- | | uuid | Unieke (technische) identificatiecode van de betrokkene bij klantcontact. | string | nee | ~~C~~​R​~~U~~​~~D~~ | | url | URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object. | string | nee | ~~C~~​R​~~U~~​~~D~~ | +| partij | Betrokkene bij klantcontact die een partij was. | array | ja | C​R​U​D | | rol | Rol die de betrokkene bij klantcontact tijdens dat contact vervulde. | string | ja | C​R​U​D | | organisatienaam | Naam van de organisatie waarmee de betrokkene bij klantcontact een relatie had. | string | nee | C​R​U​D | | initiator | | boolean | ja | C​R​U​D | +## Bijlage + +Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/objecttype/bijlage) + +| Attribuut | Omschrijving | Type | Verplicht | CRUD* | +| --- | --- | --- | --- | --- | +| uuid | Unieke (technische) identificatiecode van het inhoudsdeel. | string | nee | ~~C~~​R​~~U~~​~~D~~ | +| url | URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object. | string | nee | ~~C~~​R​~~U~~​~~D~~ | + ## Contactpersoon Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/objecttype/contactpersoon) @@ -82,6 +92,10 @@ Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/o | --- | --- | --- | --- | --- | | uuid | Unieke (technische) identificatiecode van de betrokkene bij klantcontact. | string | nee | ~~C~~​R​~~U~~​~~D~~ | | url | URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object. | string | nee | ~~C~~​R​~~U~~​~~D~~ | +| gingOverOnderwerpobject | Onderwerpobject dat tijdens een klantcontact aan de orde was. | array | ja | C​R​U​D | +| omvatteBijlagen | Bijlage die (een deel van) de inhoud van het klantcontact beschrijft. | array | ja | C​R​U​D | +| hadBetrokkene | Persoon of organisatie die betrokken was bij een klantcontact. | array | ja | C​R​U​D | +| leideTotInterneTaken | Klantcontact dat leidde tot een interne taak. | array | ja | C​R​U​D | | nummer | Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om het specifieke klantcontact aan te duiden. | string | ja | C​R​U​D | | kanaal | Communicatiekanaal dat bij het klantcontact werd gebruikt. | string | ja | C​R​U​D | | onderwerp | Datgene waarover het klantcontact ging. | string | ja | C​R​U​D | @@ -104,6 +118,15 @@ Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/o | emailadres | Elektronisch postadres waaronder de MEDEWERKER in de regel bereikbaar is. | string | nee | C​R​U​D | | telefoonnummer | Telefoonnummer waaronder de MEDEWERKER in de regel bereikbaar is. | string | ja | C​R​U​D | +## Onderwerpobject + +Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/objecttype/onderwerpobject) + +| Attribuut | Omschrijving | Type | Verplicht | CRUD* | +| --- | --- | --- | --- | --- | +| uuid | Unieke (technische) identificatiecode van het onderwerpdeel. | string | nee | ~~C~~​R​~~U~~​~~D~~ | +| url | URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object. | string | nee | ~~C~~​R​~~U~~​~~D~~ | + ## Organisatie Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/objecttype/organisatie) @@ -113,6 +136,7 @@ Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/o | id | | integer | nee | ~~C~~​R​~~U~~​~~D~~ | | url | URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object. | string | nee | ~~C~~​R​~~U~~​~~D~~ | | naam | Naam van de organisatie. | string | nee | C​R​U​D | +| contactpersoon | Organisatie waarvoor een contactpersoon werkte. | array | ja | C​R​U​D | ## OrganisatorischeEenheid diff --git a/src/openklant/components/klantinteracties/swagger2.0.json b/src/openklant/components/klantinteracties/swagger2.0.json index 55c5e5cd..d7c76c87 100644 --- a/src/openklant/components/klantinteracties/swagger2.0.json +++ b/src/openklant/components/klantinteracties/swagger2.0.json @@ -39,6 +39,46 @@ "summary": "Alle actoren opvragen.", "description": "Alle actoren opvragen.", "parameters": [ + { + "name": "soortActor", + "in": "query", + "description": "Geeft aan van welke specifieke soort actor sprake is.", + "required": false, + "type": "string", + "enum": [ + "medewerker", + "geautomatiseerde_actor", + "organisatorische_eenheid" + ] + }, + { + "name": "indicatieActief", + "in": "query", + "description": "Geeft aan of aan de actor nog betrokken mag worden bij nieuwe klantcontacten. Voor niet-actieve is dit niet toegestaan.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorObjecttype", + "in": "query", + "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorSoortObjectId", + "in": "query", + "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorObjectId", + "in": "query", + "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + "required": false, + "type": "string" + }, { "name": "page", "in": "query", @@ -87,6 +127,9 @@ } } }, + "400": { + "$ref": "#/responses/400" + }, "401": { "$ref": "#/responses/401" }, @@ -463,6 +506,62 @@ "summary": "Alle betrokkeneen opvragen.", "description": "Alle betrokkeneen opvragen.", "parameters": [ + { + "name": "klantcontact__nummer", + "in": "query", + "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om het specifieke klantcontact aan te duiden.", + "required": false, + "type": "string" + }, + { + "name": "klantcontact__uuid", + "in": "query", + "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", + "required": false, + "type": "string" + }, + { + "name": "klantcontact__url", + "in": "query", + "description": "Zoek betrokkene object op basis van het klantcontact url", + "required": false, + "type": "string" + }, + { + "name": "verstrektedigitaalAdres__adres", + "in": "query", + "description": "Zoek betrokkene object op basis van het klantcontact adres", + "required": false, + "type": "string" + }, + { + "name": "verstrektedigitaalAdres__uuid", + "in": "query", + "description": "Zoek betrokkene object op basis van het klantcontact uuid", + "required": false, + "type": "string" + }, + { + "name": "verstrektedigitaalAdres__url", + "in": "query", + "description": "Zoek betrokkene object op basis van het klantcontact url", + "required": false, + "type": "string" + }, + { + "name": "wasPartij__nummer", + "in": "query", + "description": "Zoek betrokkene object op basis van het partij nummer", + "required": false, + "type": "string" + }, + { + "name": "wasPartij__url", + "in": "query", + "description": "Zoek betrokkene object op basis van het partij url", + "required": false, + "type": "string" + }, { "name": "page", "in": "query", @@ -511,6 +610,9 @@ } } }, + "400": { + "$ref": "#/responses/400" + }, "401": { "$ref": "#/responses/401" }, @@ -881,12 +983,32 @@ } ] }, - "/contact_persoon": { + "/bijlage": { "get": { - "operationId": "contactpersoon_list", - "summary": "Alle contactpersonen opvragen.", - "description": "Alle contactpersonen opvragen.", + "operationId": "bijlage_list", + "description": "", "parameters": [ + { + "name": "objectidentificatorObjecttype", + "in": "query", + "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorSoortObjectId", + "in": "query", + "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorObjectId", + "in": "query", + "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + "required": false, + "type": "string" + }, { "name": "page", "in": "query", @@ -921,7 +1043,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" } } } @@ -935,6 +1057,9 @@ } } }, + "400": { + "$ref": "#/responses/400" + }, "401": { "$ref": "#/responses/401" }, @@ -961,13 +1086,12 @@ } }, "tags": [ - "contact_persoon" + "bijlage" ] }, "post": { - "operationId": "contactpersoon_create", - "summary": "Maak een contactpersoon aan.", - "description": "Maak een contactpersoon aan.", + "operationId": "bijlage_create", + "description": "", "parameters": [ { "name": "Content-Type", @@ -984,7 +1108,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" } } ], @@ -992,7 +1116,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" }, "headers": { "API-version": { @@ -1039,22 +1163,21 @@ } }, "tags": [ - "contact_persoon" + "bijlage" ] }, "parameters": [] }, - "/contact_persoon/{id}": { + "/bijlage/{uuid}": { "get": { - "operationId": "contactpersoon_read", - "summary": "Een specifiek contactpersoon opvragen.", - "description": "Een specifiek contactpersoon opvragen.", + "operationId": "bijlage_read", + "description": "", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" }, "headers": { "API-version": { @@ -1094,13 +1217,12 @@ } }, "tags": [ - "contact_persoon" + "bijlage" ] }, "put": { - "operationId": "contactpersoon_update", - "summary": "Werk een contactpersoon in zijn geheel bij.", - "description": "Werk een contactpersoon in zijn geheel bij.", + "operationId": "bijlage_update", + "description": "", "parameters": [ { "name": "Content-Type", @@ -1117,7 +1239,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" } } ], @@ -1125,7 +1247,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" }, "headers": { "API-version": { @@ -1168,13 +1290,12 @@ } }, "tags": [ - "contact_persoon" + "bijlage" ] }, "patch": { - "operationId": "contactpersoon_partial_update", - "summary": "Werk een contactpersoon deels bij.", - "description": "Werk een contactpersoon deels bij.", + "operationId": "bijlage_partial_update", + "description": "", "parameters": [ { "name": "Content-Type", @@ -1191,7 +1312,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" } } ], @@ -1199,7 +1320,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Contactpersoon" + "$ref": "#/definitions/Bijlage" }, "headers": { "API-version": { @@ -1242,13 +1363,12 @@ } }, "tags": [ - "contact_persoon" + "bijlage" ] }, "delete": { - "operationId": "contactpersoon_delete", - "summary": "Verwijder een contactpersoon.", - "description": "Verwijder een contactpersoon.", + "operationId": "bijlage_delete", + "description": "", "parameters": [], "responses": { "204": { @@ -1291,24 +1411,25 @@ } }, "tags": [ - "contact_persoon" + "bijlage" ] }, "parameters": [ { - "name": "id", + "name": "uuid", "in": "path", - "description": "A unique integer value identifying this contact persoon.", + "description": "Unieke (technische) identificatiecode van het inhoudsdeel.", "required": true, - "type": "integer" + "type": "string", + "format": "uuid" } ] }, - "/digitaal_adres": { + "/contact_persoon": { "get": { - "operationId": "digitaaladres_list", - "summary": "Alle digitale adressen opvragen.", - "description": "Alle digitale adressen opvragen.", + "operationId": "contactpersoon_list", + "summary": "Alle contactpersonen opvragen.", + "description": "Alle contactpersonen opvragen.", "parameters": [ { "name": "page", @@ -1344,7 +1465,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" } } } @@ -1384,13 +1505,13 @@ } }, "tags": [ - "digitaal_adres" + "contact_persoon" ] }, "post": { - "operationId": "digitaaladres_create", - "summary": "Maak een digitaal adres aan.", - "description": "Maak een digitaal adres aan.", + "operationId": "contactpersoon_create", + "summary": "Maak een contactpersoon aan.", + "description": "Maak een contactpersoon aan.", "parameters": [ { "name": "Content-Type", @@ -1407,7 +1528,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" } } ], @@ -1415,7 +1536,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" }, "headers": { "API-version": { @@ -1462,22 +1583,22 @@ } }, "tags": [ - "digitaal_adres" + "contact_persoon" ] }, "parameters": [] }, - "/digitaal_adres/{uuid}": { + "/contact_persoon/{id}": { "get": { - "operationId": "digitaaladres_read", - "summary": "Een specifiek digitaal adres opvragen.", - "description": "Een specifiek digitaal adres opvragen.", + "operationId": "contactpersoon_read", + "summary": "Een specifiek contactpersoon opvragen.", + "description": "Een specifiek contactpersoon opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" }, "headers": { "API-version": { @@ -1517,13 +1638,13 @@ } }, "tags": [ - "digitaal_adres" + "contact_persoon" ] }, "put": { - "operationId": "digitaaladres_update", - "summary": "Werk een digitaal adres in zijn geheel bij.", - "description": "Werk een digitaal adres in zijn geheel bij.", + "operationId": "contactpersoon_update", + "summary": "Werk een contactpersoon in zijn geheel bij.", + "description": "Werk een contactpersoon in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -1540,7 +1661,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" } } ], @@ -1548,7 +1669,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" }, "headers": { "API-version": { @@ -1591,13 +1712,13 @@ } }, "tags": [ - "digitaal_adres" + "contact_persoon" ] }, "patch": { - "operationId": "digitaaladres_partial_update", - "summary": "Werk een digitaal adres deels bij.", - "description": "Werk een digitaal adres deels bij.", + "operationId": "contactpersoon_partial_update", + "summary": "Werk een contactpersoon deels bij.", + "description": "Werk een contactpersoon deels bij.", "parameters": [ { "name": "Content-Type", @@ -1614,7 +1735,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" } } ], @@ -1622,7 +1743,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/DigitaalAdres" + "$ref": "#/definitions/Contactpersoon" }, "headers": { "API-version": { @@ -1665,13 +1786,13 @@ } }, "tags": [ - "digitaal_adres" + "contact_persoon" ] }, "delete": { - "operationId": "digitaaladres_delete", - "summary": "Verwijder een digitaal adres.", - "description": "Verwijder een digitaal adres.", + "operationId": "contactpersoon_delete", + "summary": "Verwijder een contactpersoon.", + "description": "Verwijder een contactpersoon.", "parameters": [], "responses": { "204": { @@ -1714,25 +1835,24 @@ } }, "tags": [ - "digitaal_adres" + "contact_persoon" ] }, "parameters": [ { - "name": "uuid", + "name": "id", "in": "path", - "description": "Unieke (technische) identificatiecode van het digitaal adres.", + "description": "A unique integer value identifying this contact persoon.", "required": true, - "type": "string", - "format": "uuid" + "type": "integer" } ] }, - "/geautomatiseerde_actoren": { + "/digitaal_adres": { "get": { - "operationId": "geautomatiseerdeactor_list", - "summary": "Alle geautomatiseerde actoren opvragen.", - "description": "Alle geautomatiseerde actoren opvragen.", + "operationId": "digitaaladres_list", + "summary": "Alle digitale adressen opvragen.", + "description": "Alle digitale adressen opvragen.", "parameters": [ { "name": "page", @@ -1768,7 +1888,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" } } } @@ -1808,13 +1928,13 @@ } }, "tags": [ - "geautomatiseerde_actoren" + "digitaal_adres" ] }, "post": { - "operationId": "geautomatiseerdeactor_create", - "summary": "Maak een geautomatiseerde actor aan.", - "description": "Maak een geautomatiseerde actor aan.", + "operationId": "digitaaladres_create", + "summary": "Maak een digitaal adres aan.", + "description": "Maak een digitaal adres aan.", "parameters": [ { "name": "Content-Type", @@ -1831,7 +1951,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" } } ], @@ -1839,7 +1959,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" }, "headers": { "API-version": { @@ -1886,22 +2006,22 @@ } }, "tags": [ - "geautomatiseerde_actoren" + "digitaal_adres" ] }, "parameters": [] }, - "/geautomatiseerde_actoren/{id}": { + "/digitaal_adres/{uuid}": { "get": { - "operationId": "geautomatiseerdeactor_read", - "summary": "Een specifiek geautomatiseerde actor opvragen.", - "description": "Een specifiek geautomatiseerde actor opvragen.", + "operationId": "digitaaladres_read", + "summary": "Een specifiek digitaal adres opvragen.", + "description": "Een specifiek digitaal adres opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" }, "headers": { "API-version": { @@ -1941,13 +2061,13 @@ } }, "tags": [ - "geautomatiseerde_actoren" + "digitaal_adres" ] }, "put": { - "operationId": "geautomatiseerdeactor_update", - "summary": "Werk een geautomatiseerde actor in zijn geheel bij.", - "description": "Werk een geautomatiseerde actor in zijn geheel bij.", + "operationId": "digitaaladres_update", + "summary": "Werk een digitaal adres in zijn geheel bij.", + "description": "Werk een digitaal adres in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -1964,7 +2084,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" } } ], @@ -1972,7 +2092,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" }, "headers": { "API-version": { @@ -2015,13 +2135,13 @@ } }, "tags": [ - "geautomatiseerde_actoren" + "digitaal_adres" ] }, "patch": { - "operationId": "geautomatiseerdeactor_partial_update", - "summary": "Werk een geautomatiseerde actor deels bij.", - "description": "Werk een geautomatiseerde actor deels bij.", + "operationId": "digitaaladres_partial_update", + "summary": "Werk een digitaal adres deels bij.", + "description": "Werk een digitaal adres deels bij.", "parameters": [ { "name": "Content-Type", @@ -2038,7 +2158,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" } } ], @@ -2046,7 +2166,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/GeautomatiseerdeActor" + "$ref": "#/definitions/DigitaalAdres" }, "headers": { "API-version": { @@ -2089,13 +2209,13 @@ } }, "tags": [ - "geautomatiseerde_actoren" + "digitaal_adres" ] }, "delete": { - "operationId": "geautomatiseerdeactor_delete", - "summary": "Verwijder een geautomatiseerde actor.", - "description": "Verwijder een geautomatiseerde actor.", + "operationId": "digitaaladres_delete", + "summary": "Verwijder een digitaal adres.", + "description": "Verwijder een digitaal adres.", "parameters": [], "responses": { "204": { @@ -2138,24 +2258,24 @@ } }, "tags": [ - "geautomatiseerde_actoren" + "digitaal_adres" ] }, "parameters": [ { - "name": "id", + "name": "uuid", "in": "path", - "description": "A unique integer value identifying this geautomatiseerde actor.", + "description": "Unieke (technische) identificatiecode van het digitaal adres.", "required": true, - "type": "integer" + "type": "string", + "format": "uuid" } ] }, - "/interne_taak": { + "/geautomatiseerde_actoren": { "get": { - "operationId": "internetaak_list", - "summary": "Alle interne taken opvragen.", - "description": "Alle interne taken opvragen.", + "operationId": "geautomatiseerdeactor_list", + "description": "Alle geautomatiseerde actoren opvragen.\nAlle geautomatiseerde actoren opvragen.", "parameters": [ { "name": "page", @@ -2191,7 +2311,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" } } } @@ -2231,13 +2351,12 @@ } }, "tags": [ - "interne_taak" + "geautomatiseerde_actoren" ] }, "post": { - "operationId": "internetaak_create", - "summary": "Maak een interne taak aan.", - "description": "Maak een interne taak aan.", + "operationId": "geautomatiseerdeactor_create", + "description": "Maak een geautomatiseerde actor aan.\nMaak een geautomatiseerde actor aan.", "parameters": [ { "name": "Content-Type", @@ -2254,7 +2373,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" } } ], @@ -2262,7 +2381,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" }, "headers": { "API-version": { @@ -2309,22 +2428,21 @@ } }, "tags": [ - "interne_taak" + "geautomatiseerde_actoren" ] }, "parameters": [] }, - "/interne_taak/{uuid}": { + "/geautomatiseerde_actoren/{id}": { "get": { - "operationId": "internetaak_read", - "summary": "Een specifiek interne taak opvragen.", - "description": "Een specifiek interne taak opvragen.", + "operationId": "geautomatiseerdeactor_read", + "description": "Een specifiek geautomatiseerde actor opvragen.\nEen specifiek geautomatiseerde actor opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" }, "headers": { "API-version": { @@ -2364,13 +2482,12 @@ } }, "tags": [ - "interne_taak" + "geautomatiseerde_actoren" ] }, "put": { - "operationId": "internetaak_update", - "summary": "Werk een interne taak in zijn geheel bij.", - "description": "Werk een interne taak in zijn geheel bij.", + "operationId": "geautomatiseerdeactor_update", + "description": "Werk een geautomatiseerde actor in zijn geheel bij.\nWerk een geautomatiseerde actor in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -2387,7 +2504,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" } } ], @@ -2395,7 +2512,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" }, "headers": { "API-version": { @@ -2438,13 +2555,12 @@ } }, "tags": [ - "interne_taak" + "geautomatiseerde_actoren" ] }, "patch": { - "operationId": "internetaak_partial_update", - "summary": "Werk een interne taak deels bij.", - "description": "Werk een interne taak deels bij.", + "operationId": "geautomatiseerdeactor_partial_update", + "description": "Werk een geautomatiseerde actor deels bij.\nWerk een geautomatiseerde actor deels bij.", "parameters": [ { "name": "Content-Type", @@ -2461,7 +2577,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" } } ], @@ -2469,7 +2585,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/InterneTaak" + "$ref": "#/definitions/GeautomatiseerdeActor" }, "headers": { "API-version": { @@ -2512,13 +2628,12 @@ } }, "tags": [ - "interne_taak" + "geautomatiseerde_actoren" ] }, "delete": { - "operationId": "internetaak_delete", - "summary": "Verwijder een interne taak.", - "description": "Verwijder een interne taak.", + "operationId": "geautomatiseerdeactor_delete", + "description": "Verwijder een geautomatiseerde actor.\nVerwijder een geautomatiseerde actor.", "parameters": [], "responses": { "204": { @@ -2561,26 +2676,64 @@ } }, "tags": [ - "interne_taak" + "geautomatiseerde_actoren" ] }, "parameters": [ { - "name": "uuid", + "name": "id", "in": "path", - "description": "Unieke (technische) identificatiecode van de interne taak.", + "description": "A unique integer value identifying this geautomatiseerde actor.", "required": true, - "type": "string", - "format": "uuid" + "type": "integer" } ] }, - "/klantcontact": { + "/interne_taak": { "get": { - "operationId": "klantcontact_list", - "summary": "Alle klanten contacten opvragen.", - "description": "Alle klanten contacten opvragen.", + "operationId": "internetaak_list", + "summary": "Alle interne taken opvragen.", + "description": "Alle interne taken opvragen.", "parameters": [ + { + "name": "nummer", + "in": "query", + "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om de specifieke interne taak aan te duiden.", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "description": "Aanduiding van de vordering bij afhandeling van de interne taak.", + "required": false, + "type": "string", + "enum": [ + "te_verwerken", + "verwerkt" + ] + }, + { + "name": "actor__naam", + "in": "query", + "description": "Naam van de actor.", + "required": false, + "type": "string" + }, + { + "name": "klantcontact__uuid", + "in": "query", + "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", + "required": false, + "type": "string" + }, + { + "name": "klantcontact__nummer", + "in": "query", + "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om het specifieke klantcontact aan te duiden.", + "required": false, + "type": "string" + }, { "name": "page", "in": "query", @@ -2615,7 +2768,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" } } } @@ -2629,6 +2782,9 @@ } } }, + "400": { + "$ref": "#/responses/400" + }, "401": { "$ref": "#/responses/401" }, @@ -2655,13 +2811,13 @@ } }, "tags": [ - "klantcontact" + "interne_taak" ] }, "post": { - "operationId": "klantcontact_create", - "summary": "Maak een klant contact aan.", - "description": "Maak een klant contact aan.", + "operationId": "internetaak_create", + "summary": "Maak een interne taak aan.", + "description": "Maak een interne taak aan.", "parameters": [ { "name": "Content-Type", @@ -2678,7 +2834,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" } } ], @@ -2686,7 +2842,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" }, "headers": { "API-version": { @@ -2733,22 +2889,22 @@ } }, "tags": [ - "klantcontact" + "interne_taak" ] }, "parameters": [] }, - "/klantcontact/{uuid}": { + "/interne_taak/{uuid}": { "get": { - "operationId": "klantcontact_read", - "summary": "Een specifiek klant contact opvragen.", - "description": "Een specifiek klant contact opvragen.", + "operationId": "internetaak_read", + "summary": "Een specifiek interne taak opvragen.", + "description": "Een specifiek interne taak opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" }, "headers": { "API-version": { @@ -2788,13 +2944,13 @@ } }, "tags": [ - "klantcontact" + "interne_taak" ] }, "put": { - "operationId": "klantcontact_update", - "summary": "Werk een klant contact in zijn geheel bij.", - "description": "Werk een klant contact in zijn geheel bij.", + "operationId": "internetaak_update", + "summary": "Werk een interne taak in zijn geheel bij.", + "description": "Werk een interne taak in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -2811,7 +2967,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" } } ], @@ -2819,7 +2975,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" }, "headers": { "API-version": { @@ -2862,13 +3018,13 @@ } }, "tags": [ - "klantcontact" + "interne_taak" ] }, "patch": { - "operationId": "klantcontact_partial_update", - "summary": "Werk een klant contact deels bij.", - "description": "Werk een klant contact deels bij.", + "operationId": "internetaak_partial_update", + "summary": "Werk een interne taak deels bij.", + "description": "Werk een interne taak deels bij.", "parameters": [ { "name": "Content-Type", @@ -2885,7 +3041,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" } } ], @@ -2893,7 +3049,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Klantcontact" + "$ref": "#/definitions/InterneTaak" }, "headers": { "API-version": { @@ -2936,13 +3092,13 @@ } }, "tags": [ - "klantcontact" + "interne_taak" ] }, "delete": { - "operationId": "klantcontact_delete", - "summary": "Verwijder een klant contact.", - "description": "Verwijder een klant contact.", + "operationId": "internetaak_delete", + "summary": "Verwijder een interne taak.", + "description": "Verwijder een interne taak.", "parameters": [], "responses": { "204": { @@ -2985,26 +3141,68 @@ } }, "tags": [ - "klantcontact" + "interne_taak" ] }, "parameters": [ { "name": "uuid", "in": "path", - "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", + "description": "Unieke (technische) identificatiecode van de interne taak.", "required": true, "type": "string", "format": "uuid" } ] }, - "/medewerker": { + "/klantcontact": { "get": { - "operationId": "medewerker_list", - "summary": "Alle medewerkers opvragen.", - "description": "Alle medewerkers opvragen.", + "operationId": "klantcontact_list", + "summary": "Alle klanten contacten opvragen.", + "description": "Alle klanten contacten opvragen.", "parameters": [ + { + "name": "hadBetrokkene__url", + "in": "query", + "description": "Zoek klantcontract object op basis van het betrokkene url", + "required": false, + "type": "string" + }, + { + "name": "hadBetrokkene__uuid", + "in": "query", + "description": "Zoek klantcontract object op basis van het betrokkene uuid", + "required": false, + "type": "string" + }, + { + "name": "nummer", + "in": "query", + "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om het specifieke klantcontact aan te duiden.", + "required": false, + "type": "string" + }, + { + "name": "kanaal", + "in": "query", + "description": "Communicatiekanaal dat bij het klantcontact werd gebruikt.", + "required": false, + "type": "string" + }, + { + "name": "inhoud", + "in": "query", + "description": "Zoek klantcontacten met specifieke tekst in inhoud", + "required": false, + "type": "string" + }, + { + "name": "onderwerp", + "in": "query", + "description": "Zoek klantcontacten met specifieke tekst in onderwerp", + "required": false, + "type": "string" + }, { "name": "page", "in": "query", @@ -3039,7 +3237,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" } } } @@ -3053,6 +3251,9 @@ } } }, + "400": { + "$ref": "#/responses/400" + }, "401": { "$ref": "#/responses/401" }, @@ -3079,13 +3280,13 @@ } }, "tags": [ - "medewerker" + "klantcontact" ] }, "post": { - "operationId": "medewerker_create", - "summary": "Maak een medewerker aan.", - "description": "Maak een medewerker aan.", + "operationId": "klantcontact_create", + "summary": "Maak een klant contact aan.", + "description": "Maak een klant contact aan.", "parameters": [ { "name": "Content-Type", @@ -3102,7 +3303,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" } } ], @@ -3110,7 +3311,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" }, "headers": { "API-version": { @@ -3157,22 +3358,22 @@ } }, "tags": [ - "medewerker" + "klantcontact" ] }, "parameters": [] }, - "/medewerker/{id}": { + "/klantcontact/{uuid}": { "get": { - "operationId": "medewerker_read", - "summary": "Een specifiek medewerker opvragen.", - "description": "Een specifiek medewerker opvragen.", + "operationId": "klantcontact_read", + "summary": "Een specifiek klant contact opvragen.", + "description": "Een specifiek klant contact opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" }, "headers": { "API-version": { @@ -3212,13 +3413,13 @@ } }, "tags": [ - "medewerker" + "klantcontact" ] }, "put": { - "operationId": "medewerker_update", - "summary": "Werk een medewerker in zijn geheel bij.", - "description": "Werk een medewerker in zijn geheel bij.", + "operationId": "klantcontact_update", + "summary": "Werk een klant contact in zijn geheel bij.", + "description": "Werk een klant contact in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -3235,7 +3436,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" } } ], @@ -3243,7 +3444,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" }, "headers": { "API-version": { @@ -3286,13 +3487,13 @@ } }, "tags": [ - "medewerker" + "klantcontact" ] }, "patch": { - "operationId": "medewerker_partial_update", - "summary": "Werk een medewerker deels bij.", - "description": "Werk een medewerker deels bij.", + "operationId": "klantcontact_partial_update", + "summary": "Werk een klant contact deels bij.", + "description": "Werk een klant contact deels bij.", "parameters": [ { "name": "Content-Type", @@ -3309,7 +3510,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" } } ], @@ -3317,7 +3518,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Medewerker" + "$ref": "#/definitions/Klantcontact" }, "headers": { "API-version": { @@ -3360,13 +3561,13 @@ } }, "tags": [ - "medewerker" + "klantcontact" ] }, "delete": { - "operationId": "medewerker_delete", - "summary": "Verwijder een medewerker.", - "description": "Verwijder een medewerker.", + "operationId": "klantcontact_delete", + "summary": "Verwijder een klant contact.", + "description": "Verwijder een klant contact.", "parameters": [], "responses": { "204": { @@ -3409,24 +3610,24 @@ } }, "tags": [ - "medewerker" + "klantcontact" ] }, "parameters": [ { - "name": "id", + "name": "uuid", "in": "path", - "description": "A unique integer value identifying this medewerker.", + "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", "required": true, - "type": "integer" + "type": "string", + "format": "uuid" } ] }, - "/organisatie": { + "/medewerker": { "get": { - "operationId": "organisatie_list", - "summary": "Alle organisaties opvragen.", - "description": "Alle organisaties opvragen.", + "operationId": "medewerker_list", + "description": "Alle medewerkers opvragen.\nAlle medewerkers opvragen.", "parameters": [ { "name": "page", @@ -3462,7 +3663,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" } } } @@ -3502,13 +3703,12 @@ } }, "tags": [ - "organisatie" + "medewerker" ] }, "post": { - "operationId": "organisatie_create", - "summary": "Maak een organisatie aan.", - "description": "Maak een organisatie aan.", + "operationId": "medewerker_create", + "description": "Maak een medewerker aan.\nMaak een medewerker aan.", "parameters": [ { "name": "Content-Type", @@ -3525,7 +3725,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" } } ], @@ -3533,7 +3733,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" }, "headers": { "API-version": { @@ -3580,22 +3780,21 @@ } }, "tags": [ - "organisatie" + "medewerker" ] }, "parameters": [] }, - "/organisatie/{id}": { + "/medewerker/{id}": { "get": { - "operationId": "organisatie_read", - "summary": "Een specifiek organisatie opvragen.", - "description": "Een specifiek organisatie opvragen.", + "operationId": "medewerker_read", + "description": "Een specifiek medewerker opvragen.\nEen specifiek medewerker opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" }, "headers": { "API-version": { @@ -3635,13 +3834,12 @@ } }, "tags": [ - "organisatie" + "medewerker" ] }, "put": { - "operationId": "organisatie_update", - "summary": "Werk een organisatie in zijn geheel bij.", - "description": "Werk een organisatie in zijn geheel bij.", + "operationId": "medewerker_update", + "description": "Werk een medewerker in zijn geheel bij.\nWerk een medewerker in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -3658,7 +3856,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" } } ], @@ -3666,7 +3864,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" }, "headers": { "API-version": { @@ -3709,13 +3907,12 @@ } }, "tags": [ - "organisatie" + "medewerker" ] }, "patch": { - "operationId": "organisatie_partial_update", - "summary": "Werk een organisatie deels bij.", - "description": "Werk een organisatie deels bij.", + "operationId": "medewerker_partial_update", + "description": "Werk een medewerker deels bij.\nWerk een medewerker deels bij.", "parameters": [ { "name": "Content-Type", @@ -3732,7 +3929,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" } } ], @@ -3740,7 +3937,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Organisatie" + "$ref": "#/definitions/Medewerker" }, "headers": { "API-version": { @@ -3783,13 +3980,12 @@ } }, "tags": [ - "organisatie" + "medewerker" ] }, "delete": { - "operationId": "organisatie_delete", - "summary": "Verwijder een organisatie.", - "description": "Verwijder een organisatie.", + "operationId": "medewerker_delete", + "description": "Verwijder een medewerker.\nVerwijder een medewerker.", "parameters": [], "responses": { "204": { @@ -3832,25 +4028,45 @@ } }, "tags": [ - "organisatie" + "medewerker" ] }, "parameters": [ { "name": "id", "in": "path", - "description": "A unique integer value identifying this organisatie.", + "description": "A unique integer value identifying this medewerker.", "required": true, "type": "integer" } ] }, - "/organisatorische_eenheid": { + "/onderwerpobject": { "get": { - "operationId": "organisatorischeeenheid_list", - "summary": "Alle organisatorische eenheid opvragen.", - "description": "Alle organisatorische eenheid opvragen.", + "operationId": "onderwerpobject_list", + "description": "", "parameters": [ + { + "name": "objectidentificatorObjecttype", + "in": "query", + "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorSoortObjectId", + "in": "query", + "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + "required": false, + "type": "string" + }, + { + "name": "objectidentificatorObjectId", + "in": "query", + "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + "required": false, + "type": "string" + }, { "name": "page", "in": "query", @@ -3885,7 +4101,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" } } } @@ -3899,6 +4115,9 @@ } } }, + "400": { + "$ref": "#/responses/400" + }, "401": { "$ref": "#/responses/401" }, @@ -3925,13 +4144,12 @@ } }, "tags": [ - "organisatorische_eenheid" + "onderwerpobject" ] }, "post": { - "operationId": "organisatorischeeenheid_create", - "summary": "Maak een organisatorische eenheid aan.", - "description": "Maak een organisatorische eenheid aan.", + "operationId": "onderwerpobject_create", + "description": "", "parameters": [ { "name": "Content-Type", @@ -3948,7 +4166,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" } } ], @@ -3956,7 +4174,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" }, "headers": { "API-version": { @@ -4003,22 +4221,21 @@ } }, "tags": [ - "organisatorische_eenheid" + "onderwerpobject" ] }, "parameters": [] }, - "/organisatorische_eenheid/{id}": { + "/onderwerpobject/{uuid}": { "get": { - "operationId": "organisatorischeeenheid_read", - "summary": "Een specifiek organisatorische eenheid opvragen.", - "description": "Een specifiek organisatorische eenheid opvragen.", + "operationId": "onderwerpobject_read", + "description": "", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" }, "headers": { "API-version": { @@ -4058,13 +4275,12 @@ } }, "tags": [ - "organisatorische_eenheid" + "onderwerpobject" ] }, "put": { - "operationId": "organisatorischeeenheid_update", - "summary": "Werk een organisatorische eenheid in zijn geheel bij.", - "description": "Werk een organisatorische eenheid in zijn geheel bij.", + "operationId": "onderwerpobject_update", + "description": "", "parameters": [ { "name": "Content-Type", @@ -4081,7 +4297,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" } } ], @@ -4089,7 +4305,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" }, "headers": { "API-version": { @@ -4132,13 +4348,12 @@ } }, "tags": [ - "organisatorische_eenheid" + "onderwerpobject" ] }, "patch": { - "operationId": "organisatorischeeenheid_partial_update", - "summary": "Werk een organisatorische eenheid deels bij.", - "description": "Werk een organisatorische eenheid deels bij.", + "operationId": "onderwerpobject_partial_update", + "description": "", "parameters": [ { "name": "Content-Type", @@ -4155,7 +4370,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" } } ], @@ -4163,7 +4378,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/OrganisatorischeEenheid" + "$ref": "#/definitions/Onderwerpobject" }, "headers": { "API-version": { @@ -4206,13 +4421,12 @@ } }, "tags": [ - "organisatorische_eenheid" + "onderwerpobject" ] }, "delete": { - "operationId": "organisatorischeeenheid_delete", - "summary": "Verwijder een organisatorische eenheid.", - "description": "Verwijder een organisatorische eenheid.", + "operationId": "onderwerpobject_delete", + "description": "", "parameters": [], "responses": { "204": { @@ -4255,24 +4469,25 @@ } }, "tags": [ - "organisatorische_eenheid" + "onderwerpobject" ] }, "parameters": [ { - "name": "id", + "name": "uuid", "in": "path", - "description": "A unique integer value identifying this organisatorische eenheid.", + "description": "Unieke (technische) identificatiecode van het onderwerpdeel.", "required": true, - "type": "integer" + "type": "string", + "format": "uuid" } ] }, - "/partij": { + "/organisatie": { "get": { - "operationId": "partij_list", - "summary": "Alle partijen opvragen.", - "description": "Alle partijen opvragen.", + "operationId": "organisatie_list", + "summary": "Alle organisaties opvragen.", + "description": "Alle organisaties opvragen.", "parameters": [ { "name": "page", @@ -4308,7 +4523,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" } } } @@ -4348,13 +4563,13 @@ } }, "tags": [ - "partij" + "organisatie" ] }, "post": { - "operationId": "partij_create", - "summary": "Maak een partij aan.", - "description": "Maak een partij aan.", + "operationId": "organisatie_create", + "summary": "Maak een organisatie aan.", + "description": "Maak een organisatie aan.", "parameters": [ { "name": "Content-Type", @@ -4371,7 +4586,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" } } ], @@ -4379,7 +4594,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" }, "headers": { "API-version": { @@ -4426,22 +4641,22 @@ } }, "tags": [ - "partij" + "organisatie" ] }, "parameters": [] }, - "/partij/{uuid}": { + "/organisatie/{id}": { "get": { - "operationId": "partij_read", - "summary": "Een specifiek partij opvragen.", - "description": "Een specifiek partij opvragen.", + "operationId": "organisatie_read", + "summary": "Een specifiek organisatie opvragen.", + "description": "Een specifiek organisatie opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" }, "headers": { "API-version": { @@ -4481,13 +4696,13 @@ } }, "tags": [ - "partij" + "organisatie" ] }, "put": { - "operationId": "partij_update", - "summary": "Werk een partij in zijn geheel bij.", - "description": "Werk een partij in zijn geheel bij.", + "operationId": "organisatie_update", + "summary": "Werk een organisatie in zijn geheel bij.", + "description": "Werk een organisatie in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -4504,7 +4719,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" } } ], @@ -4512,7 +4727,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" }, "headers": { "API-version": { @@ -4555,13 +4770,13 @@ } }, "tags": [ - "partij" + "organisatie" ] }, "patch": { - "operationId": "partij_partial_update", - "summary": "Werk een partij deels bij.", - "description": "Werk een partij deels bij.", + "operationId": "organisatie_partial_update", + "summary": "Werk een organisatie deels bij.", + "description": "Werk een organisatie deels bij.", "parameters": [ { "name": "Content-Type", @@ -4578,7 +4793,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" } } ], @@ -4586,7 +4801,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Partij" + "$ref": "#/definitions/Organisatie" }, "headers": { "API-version": { @@ -4629,13 +4844,13 @@ } }, "tags": [ - "partij" + "organisatie" ] }, "delete": { - "operationId": "partij_delete", - "summary": "Verwijder een partij.", - "description": "Verwijder een partij.", + "operationId": "organisatie_delete", + "summary": "Verwijder een organisatie.", + "description": "Verwijder een organisatie.", "parameters": [], "responses": { "204": { @@ -4678,25 +4893,23 @@ } }, "tags": [ - "partij" + "organisatie" ] }, "parameters": [ { - "name": "uuid", + "name": "id", "in": "path", - "description": "Unieke (technische) identificatiecode van de partij.", + "description": "A unique integer value identifying this organisatie.", "required": true, - "type": "string", - "format": "uuid" + "type": "integer" } ] }, - "/partij_identificator": { + "/organisatorische_eenheid": { "get": { - "operationId": "partijidentificator_list", - "summary": "Alle partij-identificatoren opvragen.", - "description": "Alle partij-identificatoren opvragen.", + "operationId": "organisatorischeeenheid_list", + "description": "Alle organisatorische eenheid opvragen.\nAlle organisatorische eenheid opvragen.", "parameters": [ { "name": "page", @@ -4732,7 +4945,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" } } } @@ -4772,13 +4985,12 @@ } }, "tags": [ - "partij_identificator" + "organisatorische_eenheid" ] }, "post": { - "operationId": "partijidentificator_create", - "summary": "Maak een partij-identificator aan.", - "description": "Maak een partij-identificator aan.", + "operationId": "organisatorischeeenheid_create", + "description": "Maak een organisatorische eenheid aan.\nMaak een organisatorische eenheid aan.", "parameters": [ { "name": "Content-Type", @@ -4795,7 +5007,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" } } ], @@ -4803,7 +5015,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" }, "headers": { "API-version": { @@ -4850,22 +5062,21 @@ } }, "tags": [ - "partij_identificator" + "organisatorische_eenheid" ] }, "parameters": [] }, - "/partij_identificator/{uuid}": { + "/organisatorische_eenheid/{id}": { "get": { - "operationId": "partijidentificator_read", - "summary": "Een specifiek partij-identificator opvragen.", - "description": "Een specifiek partij-identificator opvragen.", + "operationId": "organisatorischeeenheid_read", + "description": "Een specifiek organisatorische eenheid opvragen.\nEen specifiek organisatorische eenheid opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" }, "headers": { "API-version": { @@ -4905,13 +5116,12 @@ } }, "tags": [ - "partij_identificator" + "organisatorische_eenheid" ] }, "put": { - "operationId": "partijidentificator_update", - "summary": "Werk een partij-identificator in zijn geheel bij.", - "description": "Werk een partij-identificator in zijn geheel bij.", + "operationId": "organisatorischeeenheid_update", + "description": "Werk een organisatorische eenheid in zijn geheel bij.\nWerk een organisatorische eenheid in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -4928,7 +5138,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" } } ], @@ -4936,7 +5146,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" }, "headers": { "API-version": { @@ -4979,13 +5189,12 @@ } }, "tags": [ - "partij_identificator" + "organisatorische_eenheid" ] }, "patch": { - "operationId": "partijidentificator_partial_update", - "summary": "Werk een partij-identificator deels bij.", - "description": "Werk een partij-identificator deels bij.", + "operationId": "organisatorischeeenheid_partial_update", + "description": "Werk een organisatorische eenheid deels bij.\nWerk een organisatorische eenheid deels bij.", "parameters": [ { "name": "Content-Type", @@ -5002,7 +5211,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" } } ], @@ -5010,7 +5219,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/PartijIdentificator" + "$ref": "#/definitions/OrganisatorischeEenheid" }, "headers": { "API-version": { @@ -5053,13 +5262,12 @@ } }, "tags": [ - "partij_identificator" + "organisatorische_eenheid" ] }, "delete": { - "operationId": "partijidentificator_delete", - "summary": "Verwijder een partij-identificator.", - "description": "Verwijder een partij-identificator.", + "operationId": "organisatorischeeenheid_delete", + "description": "Verwijder een organisatorische eenheid.\nVerwijder een organisatorische eenheid.", "parameters": [], "responses": { "204": { @@ -5102,25 +5310,24 @@ } }, "tags": [ - "partij_identificator" + "organisatorische_eenheid" ] }, "parameters": [ { - "name": "uuid", + "name": "id", "in": "path", - "description": "Unieke (technische) identificatiecode van de partij-identificator.", + "description": "A unique integer value identifying this organisatorische eenheid.", "required": true, - "type": "string", - "format": "uuid" + "type": "integer" } ] }, - "/persoon": { + "/partij": { "get": { - "operationId": "persoon_list", - "summary": "Alle personen opvragen.", - "description": "Alle personen opvragen.", + "operationId": "partij_list", + "summary": "Alle partijen opvragen.", + "description": "Alle partijen opvragen.", "parameters": [ { "name": "page", @@ -5156,7 +5363,7 @@ "results": { "type": "array", "items": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" } } } @@ -5196,13 +5403,13 @@ } }, "tags": [ - "persoon" + "partij" ] }, "post": { - "operationId": "persoon_create", - "summary": "Maak een persoon aan.", - "description": "Maak een persoon aan.", + "operationId": "partij_create", + "summary": "Maak een partij aan.", + "description": "Maak een partij aan.", "parameters": [ { "name": "Content-Type", @@ -5219,7 +5426,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" } } ], @@ -5227,7 +5434,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" }, "headers": { "API-version": { @@ -5274,22 +5481,22 @@ } }, "tags": [ - "persoon" + "partij" ] }, "parameters": [] }, - "/persoon/{id}": { + "/partij/{uuid}": { "get": { - "operationId": "persoon_read", - "summary": "Een specifiek persoon opvragen.", - "description": "Een specifiek persoon opvragen.", + "operationId": "partij_read", + "summary": "Een specifiek partij opvragen.", + "description": "Een specifiek partij opvragen.", "parameters": [], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" }, "headers": { "API-version": { @@ -5329,13 +5536,13 @@ } }, "tags": [ - "persoon" + "partij" ] }, "put": { - "operationId": "persoon_update", - "summary": "Werk een persoon in zijn geheel bij.", - "description": "Werk een persoon in zijn geheel bij.", + "operationId": "partij_update", + "summary": "Werk een partij in zijn geheel bij.", + "description": "Werk een partij in zijn geheel bij.", "parameters": [ { "name": "Content-Type", @@ -5352,7 +5559,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" } } ], @@ -5360,7 +5567,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" }, "headers": { "API-version": { @@ -5403,13 +5610,13 @@ } }, "tags": [ - "persoon" + "partij" ] }, "patch": { - "operationId": "persoon_partial_update", - "summary": "Werk een persoon deels bij.", - "description": "Werk een persoon deels bij.", + "operationId": "partij_partial_update", + "summary": "Werk een partij deels bij.", + "description": "Werk een partij deels bij.", "parameters": [ { "name": "Content-Type", @@ -5426,7 +5633,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" } } ], @@ -5434,7 +5641,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/Persoon" + "$ref": "#/definitions/Partij" }, "headers": { "API-version": { @@ -5477,13 +5684,13 @@ } }, "tags": [ - "persoon" + "partij" ] }, "delete": { - "operationId": "persoon_delete", - "summary": "Verwijder een persoon.", - "description": "Verwijder een persoon.", + "operationId": "partij_delete", + "summary": "Verwijder een partij.", + "description": "Verwijder een partij.", "parameters": [], "responses": { "204": { @@ -5526,121 +5733,969 @@ } }, "tags": [ - "persoon" + "partij" ] }, "parameters": [ { - "name": "id", + "name": "uuid", "in": "path", - "description": "A unique integer value identifying this persoon.", + "description": "Unieke (technische) identificatiecode van de partij.", "required": true, - "type": "integer" - } - ] - } - }, - "definitions": { - "Objectidentificator": { - "description": "Gegevens die een onderwerpobject in een extern register uniek identificeren.", - "type": "object", - "properties": { - "objecttype": { - "title": "Objecttype", - "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", - "type": "string", - "maxLength": 200 - }, - "soortObjectId": { - "title": "Soort object id", - "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", - "type": "string", - "maxLength": 200 - }, - "objectId": { - "title": "Object-id", - "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", - "type": "string", - "maxLength": 200 - }, - "register": { - "title": "Register", - "description": "Binnen het landschap van registers unieke omschrijving van het register waarin het object is geregistreerd, bijvoorbeeld: 'BRP'.", - "type": "string", - "maxLength": 200 - } - }, - "x-nullable": true - }, - "Actor": { - "required": [ - "naam", - "soortActor" - ], - "type": "object", - "properties": { - "uuid": { - "title": "Uuid", - "description": "Unieke (technische) identificatiecode van de actor.", - "type": "string", - "format": "uuid", - "readOnly": true - }, - "url": { - "title": "Url", - "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", "type": "string", - "format": "uri", - "readOnly": true, - "maxLength": 1000, - "minLength": 1 - }, - "naam": { - "title": "Naam", - "description": "Naam van de actor.", - "type": "string", - "maxLength": 200, - "minLength": 1 - }, - "soortActor": { - "title": "Soort actor", - "description": "Geeft aan van welke specifieke soort actor sprake is.", - "type": "string", - "enum": [ - "medewerker", - "geautomatiseerde_actor", - "organisatorische_eenheid" - ] - }, - "indicatieActief": { - "title": "Indicatie actief", - "description": "Geeft aan of aan de actor nog betrokken mag worden bij nieuwe klantcontacten. Voor niet-actieve is dit niet toegestaan.", - "type": "boolean" - }, - "objectidentificator": { - "$ref": "#/definitions/Objectidentificator" + "format": "uuid" } - } + ] }, - "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" + "/partij_identificator": { + "get": { + "operationId": "partijidentificator_list", + "summary": "Alle partij-identificatoren opvragen.", + "description": "Alle partij-identificatoren opvragen.", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Een pagina binnen de gepagineerde set resultaten.", + "required": false, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "required": [ + "count", + "results" + ], + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "next": { + "type": "string", + "format": "uri", + "x-nullable": true + }, + "previous": { + "type": "string", + "format": "uri", + "x-nullable": true + }, + "results": { + "type": "array", + "items": { + "$ref": "#/definitions/PartijIdentificator" + } + } + } + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } }, - "code": { - "title": "Code", - "description": "Systeemcode die het type fout aangeeft", - "type": "string", + "tags": [ + "partij_identificator" + ] + }, + "post": { + "operationId": "partijidentificator_create", + "summary": "Maak een partij-identificator aan.", + "description": "Maak een partij-identificator aan.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Content type van de verzoekinhoud.", + "required": true, + "type": "string", + "enum": [ + "application/json" + ] + }, + { + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/PartijIdentificator" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/PartijIdentificator" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + }, + "Location": { + "schema": { + "type": "string", + "format": "uri" + }, + "description": "URL waar de resource leeft." + } + } + }, + "400": { + "$ref": "#/responses/400" + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "partij_identificator" + ] + }, + "parameters": [] + }, + "/partij_identificator/{uuid}": { + "get": { + "operationId": "partijidentificator_read", + "summary": "Een specifiek partij-identificator opvragen.", + "description": "Een specifiek partij-identificator opvragen.", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/PartijIdentificator" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "partij_identificator" + ] + }, + "put": { + "operationId": "partijidentificator_update", + "summary": "Werk een partij-identificator in zijn geheel bij.", + "description": "Werk een partij-identificator in zijn geheel bij.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Content type van de verzoekinhoud.", + "required": true, + "type": "string", + "enum": [ + "application/json" + ] + }, + { + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/PartijIdentificator" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/PartijIdentificator" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "400": { + "$ref": "#/responses/400" + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "partij_identificator" + ] + }, + "patch": { + "operationId": "partijidentificator_partial_update", + "summary": "Werk een partij-identificator deels bij.", + "description": "Werk een partij-identificator deels bij.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Content type van de verzoekinhoud.", + "required": true, + "type": "string", + "enum": [ + "application/json" + ] + }, + { + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/PartijIdentificator" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/PartijIdentificator" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "400": { + "$ref": "#/responses/400" + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "partij_identificator" + ] + }, + "delete": { + "operationId": "partijidentificator_delete", + "summary": "Verwijder een partij-identificator.", + "description": "Verwijder een partij-identificator.", + "parameters": [], + "responses": { + "204": { + "description": "No content", + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "partij_identificator" + ] + }, + "parameters": [ + { + "name": "uuid", + "in": "path", + "description": "Unieke (technische) identificatiecode van de partij-identificator.", + "required": true, + "type": "string", + "format": "uuid" + } + ] + }, + "/persoon": { + "get": { + "operationId": "persoon_list", + "summary": "Alle personen opvragen.", + "description": "Alle personen opvragen.", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Een pagina binnen de gepagineerde set resultaten.", + "required": false, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "required": [ + "count", + "results" + ], + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "next": { + "type": "string", + "format": "uri", + "x-nullable": true + }, + "previous": { + "type": "string", + "format": "uri", + "x-nullable": true + }, + "results": { + "type": "array", + "items": { + "$ref": "#/definitions/Persoon" + } + } + } + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "persoon" + ] + }, + "post": { + "operationId": "persoon_create", + "summary": "Maak een persoon aan.", + "description": "Maak een persoon aan.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Content type van de verzoekinhoud.", + "required": true, + "type": "string", + "enum": [ + "application/json" + ] + }, + { + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Persoon" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/Persoon" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + }, + "Location": { + "schema": { + "type": "string", + "format": "uri" + }, + "description": "URL waar de resource leeft." + } + } + }, + "400": { + "$ref": "#/responses/400" + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "persoon" + ] + }, + "parameters": [] + }, + "/persoon/{id}": { + "get": { + "operationId": "persoon_read", + "summary": "Een specifiek persoon opvragen.", + "description": "Een specifiek persoon opvragen.", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Persoon" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "persoon" + ] + }, + "put": { + "operationId": "persoon_update", + "summary": "Werk een persoon in zijn geheel bij.", + "description": "Werk een persoon in zijn geheel bij.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Content type van de verzoekinhoud.", + "required": true, + "type": "string", + "enum": [ + "application/json" + ] + }, + { + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Persoon" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Persoon" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "400": { + "$ref": "#/responses/400" + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "persoon" + ] + }, + "patch": { + "operationId": "persoon_partial_update", + "summary": "Werk een persoon deels bij.", + "description": "Werk een persoon deels bij.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Content type van de verzoekinhoud.", + "required": true, + "type": "string", + "enum": [ + "application/json" + ] + }, + { + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Persoon" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Persoon" + }, + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "400": { + "$ref": "#/responses/400" + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "persoon" + ] + }, + "delete": { + "operationId": "persoon_delete", + "summary": "Verwijder een persoon.", + "description": "Verwijder een persoon.", + "parameters": [], + "responses": { + "204": { + "description": "No content", + "headers": { + "API-version": { + "schema": { + "type": "string" + }, + "description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1." + } + } + }, + "401": { + "$ref": "#/responses/401" + }, + "403": { + "$ref": "#/responses/403" + }, + "404": { + "$ref": "#/responses/404" + }, + "406": { + "$ref": "#/responses/406" + }, + "409": { + "$ref": "#/responses/409" + }, + "410": { + "$ref": "#/responses/410" + }, + "415": { + "$ref": "#/responses/415" + }, + "429": { + "$ref": "#/responses/429" + }, + "500": { + "$ref": "#/responses/500" + } + }, + "tags": [ + "persoon" + ] + }, + "parameters": [ + { + "name": "id", + "in": "path", + "description": "A unique integer value identifying this persoon.", + "required": true, + "type": "integer" + } + ] + } + }, + "definitions": { + "Objectidentificator": { + "description": "Gegevens die een onderwerpobject in een extern register uniek identificeren.", + "type": "object", + "properties": { + "objecttype": { + "title": "Objecttype", + "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + "type": "string", + "maxLength": 200 + }, + "soortObjectId": { + "title": "Soort object id", + "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + "type": "string", + "maxLength": 200 + }, + "objectId": { + "title": "Object-id", + "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + "type": "string", + "maxLength": 200 + }, + "register": { + "title": "Register", + "description": "Binnen het landschap van registers unieke omschrijving van het register waarin het object is geregistreerd, bijvoorbeeld: 'BRP'.", + "type": "string", + "maxLength": 200 + } + }, + "x-nullable": true + }, + "Actor": { + "required": [ + "naam", + "soortActor" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van de actor.", + "type": "string", + "format": "uuid", + "readOnly": true + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + }, + "naam": { + "title": "Naam", + "description": "Naam van de actor.", + "type": "string", + "maxLength": 200, + "minLength": 1 + }, + "soortActor": { + "title": "Soort actor", + "description": "Geeft aan van welke specifieke soort actor sprake is.", + "type": "string", + "enum": [ + "medewerker", + "geautomatiseerde_actor", + "organisatorische_eenheid" + ] + }, + "indicatieActief": { + "title": "Indicatie actief", + "description": "Geeft aan of aan de actor nog betrokken mag worden bij nieuwe klantcontacten. Voor niet-actieve is dit niet toegestaan.", + "type": "boolean" + }, + "objectidentificator": { + "$ref": "#/definitions/Objectidentificator" + } + } + }, + "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": { @@ -5749,8 +6804,8 @@ } } }, - "KlantcontactForeignKey": { - "description": "Persoon of organisatie die betrokken was bij een klantcontact.", + "BetrokkeneForeignKey": { + "description": "Betrokkene bij klantcontact die een partij was.", "required": [ "uuid" ], @@ -5771,10 +6826,11 @@ "maxLength": 1000, "minLength": 1 } - } + }, + "x-nullable": true }, "DigitaalAdresForeignKey": { - "description": "Digitaal adres dat een betrokkene bij klantcontact verstrekte voor gebruik bij opvolging van een klantcontact.", + "description": "Digitaal adres dat een partij verstrekte voor gebruik bij toekomstig contact met de gemeente.", "required": [ "uuid" ], @@ -5798,6 +6854,201 @@ }, "x-nullable": true }, + "PartijForeignKey": { + "description": "Partij die een andere partij vertegenwoordigde.", + "required": [ + "uuid" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van de partij.", + "type": "string", + "format": "uuid" + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + } + }, + "x-nullable": true + }, + "PartijBezoekadres": { + "description": "Adres waarop de partij door gemeente bezocht wil worden. Dit mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen.", + "type": "object", + "properties": { + "nummeraanduidingId": { + "title": "Nummeraanduiding id", + "description": "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 255 + }, + "adresregel1": { + "title": "Adresregel 1", + "description": "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 80 + }, + "adresregel2": { + "title": "Adresregel 2", + "description": "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 80 + }, + "adresregel3": { + "title": "Adresregel 3", + "description": "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 80 + }, + "land": { + "title": "Land", + "description": "Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft.", + "type": "string", + "maxLength": 4, + "minLength": 4 + } + }, + "x-nullable": true + }, + "partij correspondentieadres serializer": { + "description": "Adres waarop de partij post van de gemeente wil ontvangen. Dit mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen.", + "type": "object", + "properties": { + "nummeraanduidingId": { + "title": "Nummeraanduiding ID", + "description": "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 255 + }, + "adresregel1": { + "title": "Adresregel 1", + "description": "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 80 + }, + "adresregel2": { + "title": "Adresregel 2", + "description": "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 80 + }, + "adresregel3": { + "title": "Adresregel 3", + "description": "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", + "type": "string", + "maxLength": 80 + }, + "land": { + "title": "Land", + "description": "Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft.", + "type": "string", + "maxLength": 4, + "minLength": 4 + } + }, + "x-nullable": true + }, + "KlantcontactPartij": { + "description": "Betrokkene bij klantcontact die een partij was.", + "required": [ + "nummer", + "digitaalAdres", + "voorkeursDigitaalAdres", + "vertegenwoordigde", + "soortPartij", + "indicatieGeheimhouding", + "indicatieActief" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van de partij.", + "type": "string", + "format": "uuid", + "readOnly": true + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + }, + "nummer": { + "title": "Nummer", + "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om de specifieke partij aan te duiden.", + "type": "string", + "maxLength": 10, + "minLength": 1 + }, + "interneNotitie": { + "title": "Interne notitie", + "description": "Mededelingen, aantekeningen of bijzonderheden over de partij, bedoeld voor intern gebruik.", + "type": "string", + "maxLength": 1000 + }, + "betrokkene": { + "$ref": "#/definitions/BetrokkeneForeignKey" + }, + "digitaalAdres": { + "$ref": "#/definitions/DigitaalAdresForeignKey" + }, + "voorkeursDigitaalAdres": { + "$ref": "#/definitions/DigitaalAdresForeignKey" + }, + "vertegenwoordigde": { + "description": "Partij die een andere partij vertegenwoordigde.", + "type": "array", + "items": { + "$ref": "#/definitions/PartijForeignKey" + }, + "x-nullable": true + }, + "soortPartij": { + "title": "Soort partij", + "description": "Geeft aan van welke specifieke soort partij sprake is.", + "type": "string", + "enum": [ + "persoon", + "organisatie", + "contactpersoon" + ] + }, + "indicatieGeheimhouding": { + "title": "Indicatie geheimhouding", + "description": "Geeft aan of de verstrekker van partijgegevens heeft aangegeven dat deze gegevens als geheim beschouwd moeten worden.", + "type": "boolean" + }, + "voorkeurstaal": { + "title": "Voorkeurstaal", + "description": "Taal, in ISO 639-2/B formaat, waarin de partij bij voorkeur contact heeft met de gemeente. Voorbeeld: nld. Zie: https://www.iso.org/standard/4767.html", + "type": "string", + "maxLength": 3 + }, + "indicatieActief": { + "title": "Indicatie actief", + "description": "Geeft aan of de contactgegevens van de partij nog gebruikt morgen worden om contact op te nemen. Gegevens van niet-actieve partijen mogen hiervoor niet worden gebruikt.", + "type": "boolean" + }, + "bezoekadres": { + "$ref": "#/definitions/PartijBezoekadres" + }, + "correspondentieadres": { + "$ref": "#/definitions/partij correspondentieadres serializer" + } + }, + "x-nullable": true + }, "Bezoekadres": { "description": "Adres waarop de betrokkene bij klantcontact in naar aanleiding van dat contact af te leggen bezoeken wil ontvangen. Dit mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen.", "type": "object", @@ -5909,12 +7160,36 @@ }, "x-nullable": true }, + "KlantcontactForeignKey": { + "description": "Persoon of organisatie die betrokken was bij een klantcontact.", + "required": [ + "uuid" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", + "type": "string", + "format": "uuid" + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + } + } + }, "Betrokkene": { "required": [ - "klantcontact", - "digitaalAdres", + "partij", "rol", - "initiator" + "initiator", + "klantcontact" ], "type": "object", "properties": { @@ -5934,11 +7209,13 @@ "maxLength": 1000, "minLength": 1 }, - "klantcontact": { - "$ref": "#/definitions/KlantcontactForeignKey" - }, - "digitaalAdres": { - "$ref": "#/definitions/DigitaalAdresForeignKey" + "partij": { + "description": "Betrokkene bij klantcontact die een partij was.", + "type": "array", + "items": { + "$ref": "#/definitions/KlantcontactPartij" + }, + "x-nullable": true }, "bezoekadres": { "$ref": "#/definitions/Bezoekadres" @@ -5967,21 +7244,55 @@ "initiator": { "title": "Initiator", "type": "boolean" + }, + "klantcontact": { + "$ref": "#/definitions/KlantcontactForeignKey" } } }, - "PartijForeignKey": { - "description": "Persoon of organisatie waarmee de gemeente een relatie heeft.", + "BijlageObjectidentificator": { + "description": "Gegevens die een inhoudsobject in een extern register uniek identificeren.", + "type": "object", + "properties": { + "objecttype": { + "title": "Objecttype", + "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + "type": "string", + "maxLength": 200 + }, + "soortObjectId": { + "title": "Soort object id", + "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + "type": "string", + "maxLength": 200 + }, + "objectId": { + "title": "Object-id", + "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + "type": "string", + "maxLength": 200 + }, + "register": { + "title": "Register", + "description": "Binnen het landschap van registers unieke omschrijving van het register waarin het object is geregistreerd, bijvoorbeeld: 'BRP'.", + "type": "string", + "maxLength": 200 + } + }, + "x-nullable": true + }, + "Bijlage": { "required": [ - "uuid" + "klantcontact" ], "type": "object", "properties": { "uuid": { "title": "Uuid", - "description": "Unieke (technische) identificatiecode van de partij.", + "description": "Unieke (technische) identificatiecode van het inhoudsdeel.", "type": "string", - "format": "uuid" + "format": "uuid", + "readOnly": true }, "url": { "title": "Url", @@ -5991,6 +7302,12 @@ "readOnly": true, "maxLength": 1000, "minLength": 1 + }, + "klantcontact": { + "$ref": "#/definitions/KlantcontactForeignKey" + }, + "objectidentificator": { + "$ref": "#/definitions/BijlageObjectidentificator" } } }, @@ -6055,7 +7372,7 @@ "Contactpersoon": { "required": [ "partij", - "organisatie" + "werkteVoorOrganisatie" ], "type": "object", "properties": { @@ -6076,7 +7393,7 @@ "partij": { "$ref": "#/definitions/PartijForeignKey" }, - "organisatie": { + "werkteVoorOrganisatie": { "$ref": "#/definitions/OrganisatieForeignKey" }, "contactnaam": { @@ -6086,6 +7403,7 @@ }, "DigitaalAdres": { "required": [ + "betrokkene", "adres", "soortDigitaalAdres", "omschrijving" @@ -6108,6 +7426,9 @@ "maxLength": 1000, "minLength": 1 }, + "betrokkene": { + "$ref": "#/definitions/BetrokkeneForeignKey" + }, "adres": { "title": "Adres", "description": "Digitaal adres waarmee een persoon of organisatie bereikt kan worden.", @@ -6176,30 +7497,219 @@ "maxLength": 1000, "minLength": 1 }, - "actor": { - "$ref": "#/definitions/ActorForeignKey" + "actor": { + "$ref": "#/definitions/ActorForeignKey" + }, + "functie": { + "title": "Functie", + "description": "Functie van de geautomatiseerde actor of beschrijving van de werkzaamheden die deze uitvoert.", + "type": "string", + "maxLength": 40, + "minLength": 1 + }, + "omschrijving": { + "title": "Omschrijving", + "description": "Omschrijving van de geautomatiseerde actor.", + "type": "string", + "maxLength": 200 + } + } + }, + "InterneTaak": { + "required": [ + "nummer", + "gevraagdeHandeling", + "actor", + "klantcontact", + "toelichting", + "status" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van de interne taak.", + "type": "string", + "format": "uuid", + "readOnly": true + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + }, + "nummer": { + "title": "Nummer", + "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om de specifieke interne taak aan te duiden.", + "type": "string", + "maxLength": 10, + "minLength": 1 + }, + "gevraagdeHandeling": { + "title": "Gevraagde handeling", + "description": "Handeling die moet worden uitgevoerd om de taak af te ronden.", + "type": "string", + "maxLength": 200, + "minLength": 1 + }, + "actor": { + "$ref": "#/definitions/ActorForeignKey" + }, + "klantcontact": { + "$ref": "#/definitions/KlantcontactForeignKey" + }, + "toelichting": { + "title": "Toelichting", + "description": "Toelichting die, aanvullend bij de inhoud van het klantcontact dat aanleiding gaf tot de taak en de gevraagde handeling, bijdraagt aan het kunnen afhandelen van de taak.", + "type": "string", + "maxLength": 400, + "minLength": 1 + }, + "status": { + "title": "Status", + "description": "Aanduiding van de vordering bij afhandeling van de interne taak.", + "type": "string", + "enum": [ + "te_verwerken", + "verwerkt" + ] + }, + "toegewezenOp": { + "title": "Toegewezen op", + "description": "Datum en tijdstip waarop de interne taak aan een actor werd toegewezen.", + "type": "string", + "format": "date-time", + "readOnly": true + } + } + }, + "OnderwerpobjectForeignKey": { + "description": "Onderwerpobject dat tijdens een klantcontact aan de orde was.", + "required": [ + "uuid" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van het onderwerpdeel.", + "type": "string", + "format": "uuid" + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + } + }, + "x-nullable": true + }, + "BijlageForeignKey": { + "description": "Bijlage die (een deel van) de inhoud van het klantcontact beschrijft.", + "required": [ + "uuid" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van het inhoudsdeel.", + "type": "string", + "format": "uuid" + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + } + }, + "x-nullable": true + }, + "BetrokkeneKlantcontact": { + "description": "Persoon of organisatie die betrokken was bij een klantcontact.", + "required": [ + "partij", + "rol", + "initiator" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", + "type": "string", + "format": "uuid", + "readOnly": true + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + }, + "partij": { + "description": "Betrokkene bij klantcontact die een partij was.", + "type": "array", + "items": { + "$ref": "#/definitions/KlantcontactPartij" + }, + "x-nullable": true + }, + "bezoekadres": { + "$ref": "#/definitions/Bezoekadres" }, - "functie": { - "title": "Functie", - "description": "Functie van de geautomatiseerde actor of beschrijving van de werkzaamheden die deze uitvoert.", + "correspondentieadres": { + "$ref": "#/definitions/betrokkene correspondentieadres" + }, + "contactnaam": { + "$ref": "#/definitions/Contactnaam" + }, + "rol": { + "title": "Rol", + "description": "Rol die de betrokkene bij klantcontact tijdens dat contact vervulde.", "type": "string", - "maxLength": 40, - "minLength": 1 + "enum": [ + "vertegenwoordiger", + "klant" + ] }, - "omschrijving": { - "title": "Omschrijving", - "description": "Omschrijving van de geautomatiseerde actor.", + "organisatienaam": { + "title": "Organisatienaam", + "description": "Naam van de organisatie waarmee de betrokkene bij klantcontact een relatie had.", "type": "string", "maxLength": 200 + }, + "initiator": { + "title": "Initiator", + "type": "boolean" + }, + "klantcontact": { + "$ref": "#/definitions/KlantcontactForeignKey" } - } + }, + "x-nullable": true }, - "InterneTaak": { + "KlantcontactInterneTaak": { + "description": "Klantcontact dat leidde tot een interne taak.", "required": [ "nummer", "gevraagdeHandeling", "actor", - "klantcontact", "toelichting", "status" ], @@ -6264,10 +7774,15 @@ "format": "date-time", "readOnly": true } - } + }, + "x-nullable": true }, "Klantcontact": { "required": [ + "gingOverOnderwerpobject", + "omvatteBijlagen", + "hadBetrokkene", + "leideTotInterneTaken", "nummer", "kanaal", "onderwerp", @@ -6293,6 +7808,38 @@ "maxLength": 1000, "minLength": 1 }, + "gingOverOnderwerpobject": { + "description": "Onderwerpobject dat tijdens een klantcontact aan de orde was.", + "type": "array", + "items": { + "$ref": "#/definitions/OnderwerpobjectForeignKey" + }, + "x-nullable": true + }, + "omvatteBijlagen": { + "description": "Bijlage die (een deel van) de inhoud van het klantcontact beschrijft.", + "type": "array", + "items": { + "$ref": "#/definitions/BijlageForeignKey" + }, + "x-nullable": true + }, + "hadBetrokkene": { + "description": "Persoon of organisatie die betrokken was bij een klantcontact.", + "type": "array", + "items": { + "$ref": "#/definitions/BetrokkeneKlantcontact" + }, + "x-nullable": true + }, + "leideTotInterneTaken": { + "description": "Klantcontact dat leidde tot een interne taak.", + "type": "array", + "items": { + "$ref": "#/definitions/KlantcontactInterneTaak" + }, + "x-nullable": true + }, "nummer": { "title": "Nummer", "description": "Uniek identificerend nummer dat tijdens communicatie tussen mensen kan worden gebruikt om het specifieke klantcontact aan te duiden.", @@ -6401,9 +7948,101 @@ } } }, + "OnderwerpobjectObjectidentificator": { + "description": "Gegevens die een onderwerpobject in een extern register uniek identificeren.", + "type": "object", + "properties": { + "objecttype": { + "title": "Objecttype", + "description": "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + "type": "string", + "maxLength": 200 + }, + "soortObjectId": { + "title": "Soort object id", + "description": "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + "type": "string", + "maxLength": 200 + }, + "objectId": { + "title": "Object-id", + "description": "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + "type": "string", + "maxLength": 200 + }, + "register": { + "title": "Register", + "description": "Binnen het landschap van registers unieke omschrijving van het register waarin het object is geregistreerd, bijvoorbeeld: 'BRP'.", + "type": "string", + "maxLength": 200 + } + }, + "x-nullable": true + }, + "Onderwerpobject": { + "required": [ + "klantcontact", + "wasKlantcontact" + ], + "type": "object", + "properties": { + "uuid": { + "title": "Uuid", + "description": "Unieke (technische) identificatiecode van het onderwerpdeel.", + "type": "string", + "format": "uuid", + "readOnly": true + }, + "url": { + "title": "Url", + "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", + "type": "string", + "format": "uri", + "readOnly": true, + "maxLength": 1000, + "minLength": 1 + }, + "klantcontact": { + "$ref": "#/definitions/KlantcontactForeignKey" + }, + "wasKlantcontact": { + "$ref": "#/definitions/KlantcontactForeignKey" + }, + "objectidentificator": { + "$ref": "#/definitions/OnderwerpobjectObjectidentificator" + } + } + }, + "ContactPersoonForeignkey": { + "description": "Organisatie waarvoor een contactpersoon werkte.", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "ID", + "type": "integer" + }, + "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 + }, + "partij": { + "$ref": "#/definitions/PartijForeignKey" + } + }, + "x-nullable": true + }, "Organisatie": { "required": [ - "partij" + "partij", + "contactpersoon" ], "type": "object", "properties": { @@ -6429,6 +8068,14 @@ }, "partij": { "$ref": "#/definitions/PartijForeignKey" + }, + "contactpersoon": { + "description": "Organisatie waarvoor een contactpersoon werkte.", + "type": "array", + "items": { + "$ref": "#/definitions/ContactPersoonForeignkey" + }, + "x-nullable": true } } }, @@ -6486,107 +8133,6 @@ } } }, - "BetrokkeneForeignKey": { - "description": "Betrokkene bij klantcontact die een partij was.", - "required": [ - "uuid" - ], - "type": "object", - "properties": { - "uuid": { - "title": "Uuid", - "description": "Unieke (technische) identificatiecode van de betrokkene bij klantcontact.", - "type": "string", - "format": "uuid" - }, - "url": { - "title": "Url", - "description": "URL-referentie naar dit object. Dit is de unieke identificatie en locatie van dit object.", - "type": "string", - "format": "uri", - "readOnly": true, - "maxLength": 1000, - "minLength": 1 - } - }, - "x-nullable": true - }, - "PartijBezoekadres": { - "description": "Adres waarop de partij door gemeente bezocht wil worden. Dit mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen.", - "type": "object", - "properties": { - "nummeraanduidingId": { - "title": "Nummeraanduiding id", - "description": "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 255 - }, - "adresregel1": { - "title": "Adresregel 1", - "description": "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 80 - }, - "adresregel2": { - "title": "Adresregel 2", - "description": "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 80 - }, - "adresregel3": { - "title": "Adresregel 3", - "description": "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 80 - }, - "land": { - "title": "Land", - "description": "Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft.", - "type": "string", - "maxLength": 4, - "minLength": 4 - } - }, - "x-nullable": true - }, - "partij correspondentieadres serializer": { - "description": "Adres waarop de partij post van de gemeente wil ontvangen. Dit mag afwijken van voor de verstrekker eventueel in een basisregistratie bekende adressen.", - "type": "object", - "properties": { - "nummeraanduidingId": { - "title": "Nummeraanduiding ID", - "description": "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 255 - }, - "adresregel1": { - "title": "Adresregel 1", - "description": "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 80 - }, - "adresregel2": { - "title": "Adresregel 2", - "description": "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 80 - }, - "adresregel3": { - "title": "Adresregel 3", - "description": "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen.", - "type": "string", - "maxLength": 80 - }, - "land": { - "title": "Land", - "description": "Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft.", - "type": "string", - "maxLength": 4, - "minLength": 4 - } - }, - "x-nullable": true - }, "Partij": { "required": [ "nummer",